1

我想将文件保存到我的 MySQL 数据库。

  1. 我可以从文件中获取字节数组并将其存储在数据库中吗?或者有没有其他方法可以将文件直接保存在 MySQL 数据库中?

  2. 我应该使用什么字段类型将字节数组保存到 mysql,请给我一个关于如何插入字节数组的示例查询

4

3 回答 3

8

1) 是的。byte[]使用FileInputStream.read(byte[])将文件读入。由于图像由二进制数据组成,因此请使用 a byte[](而不是字符串)。

2) 数据库中的字段应该是 a blob,这对于 a 来说是完美的byte[]。您可以使用 a 插入它PreparedStatement

PreparedStatement stmt = connection.generatePreparedStatement("INSERT INTO ... ");
stmt.setBytes(1, yourByteArray);
于 2013-07-16T09:35:50.990 回答
2

我认为您正在寻找二进制大对象(BLOB)。这应该允许您将字节流保存到数据库中。在将 BLOB 与 MySQL 和 Java 结合使用时,此示例应为您指明正确的方向。

话虽如此,人们通常不建议将整个文件存储到您的数据库中,通常建议将文件存储在您的文件系统中,并将 URI 存储在您的数据库中。您可以查看之前的 SO Post 以了解何时应该使用 BLOB。

于 2013-07-16T09:35:01.777 回答
0

您可以varbinary为此使用 MySQL 中的数据类型。它与byte[]Java 中的类型匹配。

于 2013-07-16T09:33:31.507 回答