Computer >> Máy Tính >  >> Lập trình >> MySQL

Viết một ví dụ JDBC để lấy giá trị Clob từ một bảng bằng phương thức getCharacterStream ()?

Tập hợp kết quả giao diện cung cấp phương thức có tên getClob () để truy xuất kiểu dữ liệu clob từ một bảng trong cơ sở dữ liệu. Ngoài ra, nó cũng cung cấp một phương thức có tên getCharacterStream ()

Giống như getClob (), phương thức này cũng chấp nhận một số nguyên đại diện cho chỉ số của cột (hoặc, một giá trị Chuỗi đại diện cho tên của cột) và truy xuất giá trị tại cột được chỉ định. Sự khác biệt là không giống như phương thức getClob () (trả về một đối tượng Clob), phương thức này trả về một đối tượng của lớp Reader.

Ví dụ

Giả sử chúng ta đã tạo một bảng có tên MyData trong cơ sở dữ liệu với mô tả sau.

+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| Name    | varchar(255) | YES  |     | NULL    |       |
| Article | longtext     | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+

Và, chúng tôi đã chèn dữ liệu văn bản lớn vào đó với tên JavaFX. Chương trình sau lấy nội dung của bảng MyData bằng phương thức getString () và getCharacterStream ().

import java.io.FileWriter;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RetrievingClob_CharStream {
   public static void main(String args[]) throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement();
      //retrieving the data
      ResultSet rs = stmt.executeQuery("select * from MyData");
      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++;
      }
   }  
}

Đầu ra

Connection established......
Contents of the table......
JavaFX
E:\Data\clob_output0.txt

Nếu bạn quan sát tệp trong đường dẫn thu được, bạn có thể thấy nội dung của Clob được truy xuất từ ​​bảng như hình dưới đây:

Viết một ví dụ JDBC để lấy giá trị Clob từ một bảng bằng phương thức getCharacterStream ()?