我想从我的ACCESS数据库中提取图片以及插入ACCESS数据库的OLE字段。目前我的数据库中的OLE字段中有图片,现在我想把它提取出来,我参照了CSDN的一些帖子,我写道:
string connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+
Application.StartupPath+"\\db1.mdb;";
OleDbConnection conn=new OleDbConnection(connStr);
conn.Open();
OleDbCommand cmd=new OleDbCommand("select 图片 from 类别 where 类别ID=1",conn);
OleDbDataReader reader=cmd.ExecuteReader();
reader.Read();
MemoryStream buf=new MemoryStream((byte[])reader[0]);
Image image=Image.FromStream(buf);
pictureBox1.Image=image;
可在编译时,系统在:
Image image=Image.FromStream(buf,true);
行,提示我说:未处理的“System.ArgumentException”类型的异常出现在 system.drawing.dll 中。
其他信息: 使用了无效参数。请问,我到底该怎样才能正确的显示数据库中原有的图片以及向ACCESS数据库中插入图像?
谢谢!
我已经参照了其他的方法,如:
转:把图片读到pictureBox,再写入数据库SqlConnection conn=new SqlConnection(@"data source=chenyuming2004\VSdotNET;uid=sa;pwd=cym;database=lhf");
conn.Open();
SqlCommand cmd=new SqlCommand("insert into fuser values ('1a','1b',@i)",conn);
byte[] ib=new Byte[60000];
FileStream fs=new FileStream(@"D:\windows temp\temp\1.jpg",FileMode.Open ,FileAccess.Read );
fs.Read(ib,0,60000);
cmd.Parameters.Add("@i",SqlDbType.Image,(int)fs.Length);
cmd.Parameters["@i"].Value=ib;
cmd.ExecuteNonQuery();
conn.Close();-------------------------------------------------------
从数据库读图片到pictureboxSqlConnection conn=new SqlConnection(@"data source=chenyuming2004\VSdotNET;uid=sa;pwd=cym;database=lhf");
conn.Open();
SqlCommand cmd=new SqlCommand("select 照片 from fuser where password='1b'",conn);
SqlDataReader reader=cmd.ExecuteReader();
reader.Read();
MemoryStream buf=new MemoryStream((byte[])reader[0]);
Image image=Image.FromStream(buf,true);
pictureBox1.Image=image;
但不行,谢谢

解决方案 »

  1.   

    图片存:
    string connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+
    Application.StartupPath+"\\db1.mdb;";
    //OleDbConnection conn=new OleDbConnection(connStr);
    OleDbConnection conn=new OleDbConnection(Class1.conn);
    MemoryStream s = new MemoryStream();
    pictureBox1.Image.Save(s,System.Drawing.Imaging.ImageFormat.Bmp
    byte[] b=s.ToArray(); s.Close(); OleDbCommand cm=new OleDbCommand("insert into 类别 (图片) values (@PersonImage)",conn);
    System.Data.OleDb.OleDbParameter paramPersonImage = new OleDbParameter("@PersonImage", System.Data.OleDb.OleDbType.Binary); 
    paramPersonImage.Value = b;
    cm.Parameters.Add(paramPersonImage);

    conn.Open();
    try
    {
    cm.ExecuteNonQuery();
    }
    catch(Exception ee)
    {
    MessageBox.Show(ee.ToString());
    }
    conn.Close();图片取:
    conn.Open();
    OleDbCommand cmd=new OleDbCommand("select top 1 图片 from 类别 order by 类别ID desc",conn);
    OleDbDataReader reader=cmd.ExecuteReader();

    reader.Read();


    MemoryStream buf=new MemoryStream((byte[])reader[0]);
    Image image=Image.FromStream(buf,true);
    pictureBox1.Image=image;
    conn.Close();
      

  2.   

    a帮你up一下     +留个位置学习      + 接分