【发布时间】:2010-12-28 16:35:34
【问题描述】:
我想将图像存储在 MySQL 数据库中。我已经创建了一个 BLOB 数据类型的表,但是现在如何将图像存储在这个表中?
【问题讨论】:
-
更好的选择是将图像的物理路径存储在数据库中。
我想将图像存储在 MySQL 数据库中。我已经创建了一个 BLOB 数据类型的表,但是现在如何将图像存储在这个表中?
【问题讨论】:
读取文件内容(BINARY) 并将其插入到 insert \ update MYSQL 查询中
谷歌中有很多例子:
http://www.java2s.com/Code/Java/Database-SQL-JDBC/InsertpicturetoMySQL.htm
【讨论】:
您可能想查看以下示例:
来自java2s.com: Insert picture to MySQL:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertPictureToMySql {
public static void main(String[] args) throws Exception, IOException, SQLException {
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/databaseName", "root", "root");
String INSERT_PICTURE = "INSERT INTO MyPictures (photo) VALUES (?)";
FileInputStream fis = null;
PreparedStatement ps = null;
try {
conn.setAutoCommit(false);
File file = new File("/tmp/photo.png");
fis = new FileInputStream(file);
ps = conn.prepareStatement(INSERT_PICTURE);
ps.setBinaryStream(1, fis, (int) file.length());
ps.executeUpdate();
conn.commit();
} finally {
ps.close();
fis.close();
}
}
}
MySQL 表:
CREATE TABLE MyPictures (
photo BLOB
);
如果图像位于您的 MySQL 服务器主机上,您可以使用来自 MySQL 客户端的 LOAD_FILE() 命令:
INSERT INTO MyPictures (photo) VALUES(LOAD_FILE('/tmp/photo.png'));
【讨论】:
LOAD_FILE() 函数:INSERT INTO mytbl (image_data) VALUES(LOAD_FILE('/tmp/myimage.png')); (freeopenbook.com/mysqlcookbook/mysqlckbk-CHP-17-SECT-7.html)
LOAD_FILE() 方法?如果是,请确保该文件可由 mysql 读取,并确保您的 mysql 用户具有FILE 权限。