PreparedStatementThe setBinaryStream() method of the interface accepts an integer representing the parameter index and an InputStream object, and sets the parameter to the given InputStream object. You can use this method whenever you need to send very large binary values.
SQL database provides a data type called Blob (Binary Large Object) in which you can store large binary data, such as images.
If you need to use a JDBC program to store images in the database, create a table of Blob data type as follows:
CREATE TABLE Tutorial(Name VARCHAR(255), Type INT NOT NULL, Logo BLOB);
Now , use JDBC to connect to the database and prepare a PreparedStatement Insert the value into the table created above:
String query = "INSERT INTO Tutorial(Name, Type, Logo) VALUES (?, ?, ?)"; PreparedStatement pstmt = con.prepareStatement(query);
Use the setter method of the PreparedStatement interface to set the value of the placeholder, and use setBinaryStream( ) method sets the value of the Blob data type.
FileInputStream fin = new FileInputStream("javafx_logo.jpg"); pstmt.setBinaryStream(3, fin);
The following example demonstrates how to insert an image into a MySQL database using a JDBC program. Here, we create a table containing a Blob data type, insert values into the table (a BinaryStream object of type Blob), and retrieve the table's contents.
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class InsertingImageToDatabase { 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 the Statement Statement stmt = con.createStatement(); //Executing the statement String createTable = "CREATE TABLE Tutorial( " + "Name VARCHAR(255), " + "Type VARCHAR(50), " + "Logo BLOB)"; stmt.execute(createTable); //Inserting values String query = "INSERT INTO Tutorial(Name, Type, Logo) VALUES (?, ?, ?)"; PreparedStatement pstmt = con.prepareStatement(query); pstmt.setString(1, "JavaFX"); pstmt.setString(2, "Java_library"); FileInputStream fin = new FileInputStream("E:\images\javafx_logo.jpg"); pstmt.setBinaryStream(3, fin); pstmt.execute(); pstmt.setString(1, "CoffeeScript"); pstmt.setString(2, "scripting Language"); fin = new FileInputStream("E:\images\coffeescript_logo.jpg"); pstmt.setBinaryStream(3, fin); pstmt.execute(); pstmt.setString(1, "Cassandra"); pstmt.setString(2, "NoSQL database"); fin = new FileInputStream("E:\images\cassandra_logo.jpg"); pstmt.setBinaryStream(3, fin); pstmt.execute(); System.out.println("Data inserted"); ResultSet rs = stmt.executeQuery("Select *from Tutorial"); while(rs.next()) { System.out.print("Name: "+rs.getString("Name")+", "); System.out.print("Tutorial Type: "+rs.getString("Type")+", "); System.out.print("Logo: "+rs.getBlob("Logo")); System.out.println(); } } }
Connection established...... Data inserted Name: JavaFX, Tutorial Type: Java_library, Logo: com.mysql.jdbc.Blob@7dc5e7b4 Name: CoffeeScript, Tutorial Type: scripting Language, Logo: com.mysql.jdbc.Blob@1ee0005 Name: Cassandra, Tutorial Type: NoSQL database, Logo: com.mysql.jdbc.Blob@75a1cd57
Note: You can only store and retrieve images of type .gif or .jpeg or .png using JDBC programs.
The above is the detailed content of How to insert image into database using JDBC?. For more information, please follow other related articles on the PHP Chinese website!