MySQL 如何使用Java程序将图像插入到数据库中
通常使用 blob 类型在 MySQL 数据库中保存图像。因此,请确保您创建了一个具有 blob 数据类型的表,其描述如下:
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| Name | varchar(255) | YES | | NULL | |
| image | blob | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
要将图像插入到 MySQL 数据库中,请执行以下步骤:
阅读更多:MySQL 教程
第一步:连接到数据库
您可以使用 DriverManager 类的 getConnection() 方法连接到数据库。 通过将 MySQL URL 传递为参数(其中 sampleDB 是数据库名称)、用户名和密码来连接到 MySQL 数据库。
String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
第二步:创建一个预处理语句
使用 Connection 接口的 prepareStatement() 方法创建一个 PreparedStatement 对象。将插入查询(具有占位符)作为参数传递给此方法。
PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTable VALUES(?, ?)");
第三步:设置占位符的值
使用 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);
第四步:执行语句
使用 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("连接已建立......");
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("记录已插入......");
}
}
输出
连接已建立......
记录已插入......
极客教程