我制作了一个 C# 应用程序,将图像从硬盘添加到 mysql 中的 blob 字段。我没有收到错误,并且 blob 字段已填充。
当我检查 MySQL Workbench 中的 blob 字段时,它说该字段不正确(它无法显示图像)。
无论我做什么,无论我尝试什么例子,似乎都没有任何效果。所以在这里放置任何示例代码是没有意义的,因为到目前为止没有任何工作。
有没有人有一个很好的示例代码可以尝试?
谢谢
好的,因为有些人想要显示一些代码,所以我在 Alex 的链接中描述的帮助下创建了一个非常简单的控制台应用程序。我确实采用了该代码并放置在控制台应用程序中。发生了一些奇迹,因为它在我启动应用程序时就起作用了。我不知道我在主应用程序中做错了什么,但它必须是一些东西(duh)。这是代码:
string MyConString = "SERVER=localhost;" +
"DATABASE=database;" +
"UID=root;" +
"PASSWORD=pass;";
System.IO.FileStream fs = new FileStream(@"D:\link\to\image.png", FileMode.Open);
System.IO.BufferedStream bf = new BufferedStream(fs);
byte[] buffer = new byte[bf.Length];
bf.Read(buffer, 0, buffer.Length);
byte[] buffer_new = buffer;
MySqlConnection connection = new MySqlConnection(MyConString);
connection.Open();
MySqlCommand command = new MySqlCommand("", connection);
command.CommandText = "insert into table(fldImage) values(@image);";
command.Parameters.AddWithValue("@image", buffer_new);
command.ExecuteNonQuery();
connection.Close();
Console.WriteLine("Task Performed!");
Console.ReadLine();
您是否尝试通过 mysql 连接器(存储它的方式)恢复 blob。MySQL Workbench 不显示图像并不意味着它没有被存储。
尝试恢复图像:
while (reader.read())
{
var image = (byte[])reader.getColumn(0);
File.WriteAllBytes(@"c:\image.extension", image);
}
这样你就可以确保它正在保存。