2

我制作了一个 C# 应用程序,将图像从硬盘添加到 mysql 中的 blob 字段。我没有收到错误,并且 blob 字段已填充。

当我检查 MySQL Workbench 中的 blob 字段时,它说该字段不正确(它无法显示图像)。

无论我做什么,无论我尝试什么例子,似乎都没有任何效果。所以在这里放置任何示例代码是没有意义的,因为到目前为止没有任何工作。

有没有人有一个很好的示例代码可以尝试?

谢谢

4

3 回答 3

3

好的,因为有些人想要显示一些代码,所以我在 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();
于 2012-09-02T12:09:18.557 回答
0

您是否尝试通过 mysql 连接器(存储它的方式)恢复 blob。MySQL Workbench 不显示图像并不意味着它没有被存储。

尝试恢复图像:

while (reader.read())
{
    var image = (byte[])reader.getColumn(0);
    File.WriteAllBytes(@"c:\image.extension", image);
}

这样你就可以确保它正在保存。

于 2012-09-01T15:27:20.960 回答
0

我发现在使用 mysql 和 .NET 时,MySQL 连接器让事情变得非常简单!

这家伙:Save Image in MySQL via C# application似乎是正确的。

祝你好运!

于 2012-09-01T15:31:03.707 回答