ResultSet接口提供名為getClob()和getCharacterStream()的方法來檢索Clob數據類型,通常存儲文件的內容。
這些方法接受表示列索引的整數(或表示列名稱的字符串值)并檢索指定列處的值.
區別在于 getClob() 方法返回一個 Clob 對象,而 getCgaracterStream() 方法返回一個包含 Clob 數據類型內容的 Reader 對象。
示例
假設我們在數據庫中創建了一個名為 Articles 的表,并具有以下描述。
+---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | Name | varchar(255) | YES | | NULL | | | Article | longtext | YES | | NULL | | +---------+--------------+------+-----+---------+-------+
登錄后復制
并且,我們在其中插入了三篇文章,名稱為文章 1、文章 2 和文章 3,如下所示:
示例
以下程序使用 getString() 和 getClob() 方法檢索表 Articles 的內容,并將其保存在指定文件。
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 RetrievingFileFromDatabase { 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 aStatement Statement stmt = con.createStatement(); //Retrieving the data ResultSet rs = stmt.executeQuery("select * from Articles"); 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 reader = clob.getCharacterStream(); String filePath = "E:\Data\clob_output"+j+".txt"; FileWriter writer = new FileWriter(filePath); int i; while ((i = reader.read())!=-1) { writer.write(i); } writer.close(); System.out.println(filePath); j++; } } }
登錄后復制
輸出
Connection established...... Contents of the table are: article1 E:\Data\clob_output0.txt article2 E:\Data\clob_output1.txt article3 E:\Data\clob_output2.txt
登錄后復制
以上就是我們如何使用 JDBC 從數據庫中檢索文件?的詳細內容,更多請關注www.92cms.cn其它相關文章!