C# 在数据库中检索图像.获取错误参数无效

本文关键字:获取 取错误 参数 无效 图像 检索 数据库 | 更新日期: 2023-09-27 17:55:28

我不知道我的代码在数据库中检索图像时出了什么问题。我在不使用图像路径文件的情况下插入图像,因为凸轮提供的图像。

这是我在数据库中插入图像的代码

Image img = pictureBox1.Image;
MemoryStream memStream = new MemoryStream();
img.Save(memStream, ImageFormat.Bmp);
byte[] imageBt = memStream.ToArray();
query = "";
query += "INSERT INTO table(picture) VALUES ('" + imageBt + "')";
cmd = new MySqlCommand(query, con);
cmd.ExecuteNonQuery();
con.close();

这是我在数据库中检索图像的代码

query = "";
query += "SELECT picture FROM table WHERE id = '1'";
cmd = new MySqlCommand(query, con);
con.Open();
MemoryStream ms = new MemoryStream();
byte[] image = (byte[])cmd.ExecuteScalar();
ms.Write(image, 0, image.Length);
con.Close();
Bitmap bmp = new Bitmap(ms)
pictureBox1.Image = bmp; //Still get the Error here parameter is not valid

在数据库中保存图像是否有任何错误的过程。顺便说一句,我在数据库中的图像类型是 Blob。我不知道为什么它在检索图像时不起作用,它总是抛出错误。谢谢

C# 在数据库中检索图像.获取错误参数无效

阅读时,您没有倒带流。如果Write,则必须在之后设置ms.Position = 0;。或者更简单:从数据创建流,然后您不需要:

byte[] image = ...
var ms = new MemoryStream(image);

写入时,您似乎直接注入了数据。那。。。几乎肯定行不通 - 事实上,您可能正在向命令写入System.Byte[]。理想情况下,使用参数:

query = "INSERT INTO table(picture) VALUES (@blob)";
cmd = new MySqlCommand(query, con);
cmd.Parameters.AddWithValue("blob", imageBt);
cmd.ExecuteNonQuery();

(确切的语法可能会在RDBMS实现之间更改)