【问题标题】:Unable to retrieve image from database to picturebox无法将图像从数据库检索到图片框
【发布时间】:2012-11-30 06:40:39
【问题描述】:

我的 Windows 窗体中有一个 PictureBox 控件。
“TableName”表中图片列的数据类型是“图像”
这些是代码,从数据库中获取图像并将其放入PictureBox 控件中:

string connectionString = @"Initial Catalog=DataBaseName;Data Source=DataSourceName;Integrated Security=SSPI;";
            SqlConnection connection = new SqlConnection(connectionString);
            connection.Open();
            SqlDataAdapter da = new SqlDataAdapter(new SqlCommand("Select Picture From TableName where ID = 2 ", connection));
            DataSet ds = new DataSet();
            da.Fill(ds);
            byte[] myImage = new byte[0];
            myImage = (byte[])ds.Tables[0].Rows[0]["Picture"];
            MemoryStream stream = new MemoryStream(myImage);
            pictureBox1.Image = Image.FromStream(stream);
            connection.Close();

通常它总是有效,但现在它在这一行显示ArgumentExeption 错误“参数无效”pictureBox1.Image = Image.FromStream(stream);
我不明白?哪个参数?

任何帮助将不胜感激。

【问题讨论】:

  • 您是否检查过 db 查询是否返回了有效结果?
  • 是的,它显示了有效的结果。我唯一的问题是 PictureBox 没有从 MemoryStreams 对象中获取图像。

标签: c# winforms sql-server-2008-r2


【解决方案1】:

它似乎在于您从数据库中保存和读取对象的方式,例外来自 Image.FromStream(stream);方法,MSDN 说一下这个异常:

流没有有效的图像格式 -或者- 流为空。

因此,正如您在问题中提到的它不是 Null,我假设您正在保存数据或以不兼容的方式读取数据。

【讨论】:

  • 您能否尝试将文件流保存到磁盘并检查内容是否有效...此处示例:stackoverflow.com/questions/3879650/…
  • 当您尝试保存到文件时?在这种情况下,问题是存储到 db 中的数据......而解决方案不在这段代码中。您需要查看它的存储方式
  • @Mate 是的,你是对的,我已经在数据库中检查过了,它在图片列中为所有其他图像保存了相同的字节数组
  • 太棒了!现在来检查一下!作为最后的评论......如果非常需要获取图片,我建议您不要使用数据集。这是一个带有 SqlDataReader 的示例:codeproject.com/Questions/145368/…
  • @MeNoMore 我使用通常的方式将图像存储在数据库中`MemoryStream stream = new MemoryStream(); pictureBox1.Image.Save(stream, ImageFormat.Jpeg); byte[] uploadImage = stream.ToArray();`
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多