【发布时间】:2019-05-10 00:42:27
【问题描述】:
我正在尝试将我计算机中的文档放入 MySQL 数据库中的 BLOB 列。
我尝试将 .doc 文件转换为 byte[] 数组,但它一直将 [BLOB - 13 B](即 system.byte[] 作为字符串)保存到数据库而不是实际字节。
我不知道哪个部分失败了,我尝试了多种转换方法并坚持使用这种方法,因为:
int curr = 0;
foreach (string path in documenteFinal)
{
try
{
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
using (BinaryReader br = new BinaryReader(fs))
{
byte[] fileData = br.ReadBytes((int)fs.Length);
connection.Open();
MySqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "insert into documents values(null, '" + documenteFinal[curr] + "', '" + fileData + "')";
cmd.ExecuteNonQuery();
connection.Close();
}
}
catch (System.ArgumentNullException)
{ break; }
curr++;
}
【问题讨论】:
-
你应该使用参数化查询,比如这里:stackoverflow.com/a/12235835/869621
-
你的连接字符串在哪里?如果失败,代码中的哪一行?
-
@KevinGosse 这就是问题所在!谢谢!我总是这样查询,没有考虑过这样的问题。
-
@jdweng 正如 Kevin 和 BoredomOverload 指出的那样,这是一个错误编写的查询
-
真正的错误是由于写入二进制数据。您在数据库条约作为字符串而不是字节数组的数据周围添加了双引号。