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

回到顶部