回答

收藏

从db显示图片到Picturebox WinForms C#

技术问答 技术问答 189 人阅读 | 0 人回复 | 2023-09-12

我在做一个winforms应用程序将图像插入数据库(SQL Server
4 g* O# N6 E  [2008),然后从数据库中检索图像到图片框。插入代码可以完美工作。试着通过窥视找到各种解决方案,但都没有成功。
" N: N. t  A7 P% k这是我的检索代码; {; X. L+ S! @# y5 S- w: I  U: [/ R* _
    con);      cmd.CommandType = CommandType.Text;      object ima = cmd.ExecuteScalar();      Stream str = new MemoryStream((byte[])ima);      pictureBox1.Image = Bitmap.FromStream(str);        SqlDataAdapter dp = new SqlDataAdapter(cmd);        DataSet ds = new DataSet();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;dp.Fill(ds);        int c = ds.Tables[0].Rows.Count;        if (c ==1)1)                                                                                                                         Byte[] MyData = new byte[0]MyData = (Byte[])ds.Tables[0].Rows[0]["img"];            MemoryStream stream = new MemoryStream(MyData);            stream.Position = 0;          pictureBox1.Image = Image.FromStream(stream);                                         con);        //cmd.CommandType = CommandType.Text;        //object ima = cmd.ExecuteScalar();        //Stream str = new MemoryStream((byte[])ima);        //pictureBox1.Image = Bitmap.FromStream(str);        SqlDataAdapter dp = new SqlDataAdapter(cmd);        DataSet ds = new DataSet();        dp.Fill(ds);        int c = ds.Tables[0].Rows.Count;        if (c ==1)        {            Byte[] MyData = new byte[0];            MyData = (Byte[])ds.Tables[0].Rows[0]["img"];            MemoryStream stream = new MemoryStream(MyData);            stream.Position = 0;            pictureBox1.Image = Image.FromStream(stream);        }    }               
0 R0 u* a& |  Y5 _! x! i    解决方案:                                                               
1 z# X1 ~' f! w% R: [                                                                首先,您必须考虑图像数据库中的数据类型VarBinary:
  T  O: H* U& s4 F# E  y& _3 t按钮点击事件:
, {, K* n7 q" v1 Q( M3 j2 mbyte[] getImg=new byte[0];SqlDataAdapter da = new SqlDataAdapter();SqlCommand cmd = new SqlCommand("select img from tempdb where id='"   id   "'",con);cmd.CommandType=CommandType.Text;DataSet ds = new DataSet();da.Fill(ds);foreach(DataRow dr in ds.Tables[0].Rows){   getImg=(byte[])dr["img"];}byte[] imgData=getImg;MemoryStream stream = new MemoryStream(imgData);pictureBox1.Image=Image.FromStream(stream);}
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则