JDBC Clob数据类型是什么?如何存储和读取数据?
CLOB通常代表Character Large Object,SQL Clob是内置数据类型,用于存储大量文本数据。使用此数据类型,您最多可以存储2,147,483,647个字符。
JDBC API的java.sql.Clob接口表示CLOB数据类型。由于JDBC中的Clob对象是使用SQL定位器实现的,因此它包含指向SQL CLOB(而不是数据)的逻辑指针。
MYSQL数据库使用四个变量对此数据类型提供支持。
TINYTEXT: CLOB类型,最多28-1(255)个字符。
文本: CLOB类型,最多216-1(65535)个字符。
MEDIUMTEXT:一种CLOB类型,最多包含224-1(16777215)个字符。
LONGTEXT: CLOB类型,最多包含232-1(4294967295)个字符。
将Clob数据类型存储到数据库中的表中
要将Clob数据类型存储到数据库,请使用JDBC程序执行以下步骤
步骤1:连接到数据库
您可以使用DriverManager类的getConnection()方法连接到数据库。
通过传递MySQL URL到jdbc:mysql:// localhost / sampleDB(其中sampleDB是数据库名称),用户名和密码作为getConnection()
方法的参数,以连接到MySQL数据库。
String mysqlUrl = "jdbc:mysql://localhost/sampleDB";Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
步骤2:创建一个准备好的语句
使用Connection接口的prepareStatement()方法创建PreparedStatement对象。为此方法传递插入查询(带有占位符)作为参数。
PreparedStatement pstmt = con.prepareStatement("INSERT INTO Technologies(Name,Type, Article ) VALUES (?, ?, ?)");
步骤3:为占位符设置值
使用PreparedStatement接口的setter方法将值设置为占位符。根据列的数据类型选择方法。例如,如果该列为VARCHAR类型,则使用setString()
method;如果该列为INT类型,则可以使用setInt()
method。
如果它是Clob类型,则可以使用setCharacterStream()
或setClob()
方法为其设置值。向这些方法传递表示参数索引的整数变量和作为参数的Reader类的对象。
pstmt.setString(1, "JavaFX");pstmt.setString(2, "Java Library");
FileReader reader = new FileReader("E:\\images\\javafx.txt");
pstmt.setClob(3, reader);
pstmt.execute();
步骤4:执行语句
使用PreparedStatement接口的execute()方法执行上面创建的PreparedStatement对象。
从数据库检索Blob
getClob()
ResultSet接口的方法接受代表列索引的整数(或代表列名称的String值),并检索指定列的值,并以Clob对象的形式返回它。
while(rs.next()) {System.out.println(rs.getString("Name"));
System.out.println(rs.getString("Type"));
Clob clob = rs.getClob("Article");
}
Clob接口的getCharacterStream()方法检索当前Clob对象的内容,并作为Reader对象返回。
使用getClob()方法,可以使用FileOutputStream对象的write()方法将Clob的内容作为Reader对象获取,并使用检索到的内容创建文本文件。
Reader r = clob.getCharacterStream();char cbuf[] = new char[r.read()];
r.read(cbuf);
FileOutputStream outPutStream = new
FileOutputStream("E:\\images\\clob_output"+i+".txt");
outPutStream.write(cbuf.toString().getBytes());
示例
以下示例在MySQL数据库中创建一个具有Clob数据类型的表。将大文本数据从文件插入到文件中。取回文本并将其存储在另一个文本文件中。
import java.io.FileReader;import java.io.FileWriter;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class ClobExample {
public static void main(String args[]) throws Exception {
//注册驱动程序
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//获得连接
String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("Connection established......");
//创建表
Statement stmt = con.createStatement();
stmt.execute("CREATE TABLE Technologies( Name VARCHAR(255), Type VARCHAR(255), Article LONGTEXT)");
System.out.println("Table Created......");
//插入值
String query = "INSERT INTO Technologies(Name, Type, Article ) VALUES (?, ?, ?)";
PreparedStatement pstmt = con.prepareStatement(query);
pstmt.setString(1, "JavaFX");
pstmt.setString(2, "Java Library");
FileReader reader = new FileReader("E:\\images\\javafx.txt");
pstmt.setClob(3, reader);
pstmt.execute();
pstmt.setString(1, "CoffeeScript");
pstmt.setString(2, "Scripting Language");
reader = new FileReader("E:\\images\\coffeescript.txt");
pstmt.setClob(3, reader);
pstmt.execute();
pstmt.setString(1, "Cassandra");
pstmt.setString(2, "NoSQL Database");
reader = new FileReader("E:\\images\\cassandra.txt");
pstmt.setClob(3, reader);
pstmt.execute();
//检索数据
ResultSet rs = stmt.executeQuery("select * from Technologies");
int j = 0;
System.out.println("Contents of the table are: ");
while(rs.next()) {
System.out.println(rs.getString("Name"));
Clob clob = rs.getClob("Article");
Reader r = clob.getCharacterStream();
String filePath = "E:\\Data\\clob_output"+j+".txt";
FileWriter writer = new FileWriter(filePath);
int i;
while ((i=r.read())!=-1) {
writer.write(i);
}
writer.close();
System.out.println(filePath);
j++;
}
}
}
输出结果
Connection established......Table Created......
Contents of the table are:
JavaFX
Java Library
E:\images\clob_output1.txt
CoffeeScript
Scripting Language
E:\images\clob_output2.txt
Cassandra
NoSQL Database
E:\images\clob_output3.txt
以上是 JDBC Clob数据类型是什么?如何存储和读取数据? 的全部内容, 来源链接: utcz.com/z/338463.html