如何使用Java程序将图像插入MySQL数据库?

为了在MySQL数据库中保存图像,通常使用blob类型。因此,请确保您具有一个使用blob数据类型创建的表,并具有以下描述:

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

要将图像插入MySQL数据库,请按照以下步骤操作:

步骤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 MyTable VALUES(?, ?)");

步骤3:为占位符设置值

使用PreparedStatement接口的setter方法将值设置为占位符。根据列的数据类型选择方法。例如,如果列为VARCHAR类型,则使用setString()方法;如果列为INT类型,则可以使用setInt()方法。

如果它是Blob类型,则可以使用setBinaryStream()setBlob()方法为其设置值。向这些方法传递表示参数索引的整数变量和InputStream类的对象作为参数。

pstmt.setString(1, "sample image");
//插入Blob类型
InputStream in = new FileInputStream("E:\\images\\cat.jpg");
pstmt.setBlob(2, in);

步骤4:执行语句

使用PreparedStatement接口的execute()方法执行上面创建的PreparedStatement对象。

示例

import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class InsertImageToMySqlDB {
   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......");
      PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTable VALUES(?,?)");
      pstmt.setString(1, "sample image");
      //插入Blob类型
      InputStream in = new FileInputStream("E:\\images\\cat.jpg");
      pstmt.setBlob(2, in);
      //执行语句
      pstmt.execute();
      System.out.println("Record inserted......");
   }
}

输出结果

Connection established......
Record inserted......