Home >Database >Mysql Tutorial >How can we retrieve files from database using JDBC?
The
ResultSet interface provides methods named getClob() and getCharacterStream() to retrieve the Clob data type, which usually stores files Content.
These methods accept an integer representing a column index (or a string value representing a column name) and retrieve the value at the specified column.
The difference is that the getClob() method returns a Clob object, while The getCgaracterStream() method returns a Reader object containing contents of Clob data type.
Suppose we create a table named Articles in the database with the following description.
+---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | Name | varchar(255) | YES | | NULL | | | Article | longtext | YES | | NULL | | +---------+--------------+------+-----+---------+-------+
And, we inserted three articles in it, named article 1, article 2 and article 3, as follows:
##ExampleThe following program uses the getString() and getClob() methods to retrieve the contents of the table Articles and save it in the specified file.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++; } } }Output
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
The above is the detailed content of How can we retrieve files from database using JDBC?. For more information, please follow other related articles on the PHP Chinese website!