从SQLite到C#检索图像时出现问题

时间:2011-09-12 16:13:45

标签: c# sqlite blob

我花了相当多的时间尝试从SQLite中检索图像,但我已经失败了。如果有人可以帮助我解决我在这里做错的事情,那将非常感激。下面是我用来检索存储在SQLite中的BLOB图像的代码。

SQLiteConnection con = new SQLiteConnection(Properties.Settings.Default.conString);
con.Open();
SQLiteCommand cmd = new SQLiteCommand("SELECT ImageFiles FROM basicconcepts WHERE id=1",con);
SQLiteDataReader reader=cmd.ExecuteReader();
byte[] imageBytes=null;
while (reader.Read())
{
  imageBytes = (System.Byte[])reader["ImageFiles"];
}
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
ms.Write(imageBytes, 0, imageBytes.Length);
pictureBox1.Image = Image.FromStream(ms, true);

这是我得到的错误的堆栈跟踪

 System.ArgumentException was caught
 Message=Parameter is not valid.
 Source=System.Drawing
 StackTrace:
   at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
   at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement)
   at WindowsFormsApplication1.frmMain.getPDF(String c_Name, Int32 pgNo) in C:\Users\Tanmay\Documents\My Projects\E-Excust\E-Excust\E-Excust\frmMain.cs:line 148
  InnerException: 

PS上面的代码在getPDF方法中。

修改

我找到了解决问题的方法。问题是,令人惊讶的是我正在使用的sql管理工具。我强烈建议不要使用sqlite管理员来检索BLOB图像。 我开始使用SQLite Expert,一切都很好。无法相信我在这一整天都绞尽脑汁 谢谢大家的帮助,特别是那些没有在这里回答过但在聊天方面给我很多帮助的人。非常感谢usernane,yas4891,SomeGuy和其他几个人

1 个答案:

答案 0 :(得分:0)

从数据库byte[] read the binary data后,你可以简单地:

var ms = new MemoryStream(imageBytes);
pictureBox1.Image = Image.FromStream(ms, true);