将字节数组从Java写入MySQL数据库作为图像或文件

时间:2013-07-16 09:29:14

标签: java mysql file byte bytearray

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

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

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

3 个答案:

答案 0 :(得分:8)

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

2)数据库中的字段应为blob,非常适合byte[]。您可以使用PreparedStatement

插入它
PreparedStatement stmt = connection.generatePreparedStatement("INSERT INTO ... ");
stmt.setBytes(1, yourByteArray);

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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