我写个很小的操练DataReader的程序.但是遇到个问题就是我如何从reader里面把byte[]转化成Image并且在PictureBox显示出来我的代码如下:
string s="insert into UserInfo(userID,userName,userBirth,userNote,userPic) values(?,?,?,?,?) ";
cmd.CommandText=s;
System.Data.OleDb.OleDbParameterCollection pc=cmd.Parameters;
pc.Add("userID",System.Data.OleDb.OleDbType.Integer);
pc.Add("userName",System.Data.OleDb.OleDbType.VarChar);
pc.Add("userBirth",System.Data.OleDb.OleDbType.VarChar);
pc.Add("userNote",System.Data.OleDb.OleDbType.VarChar);
pc.Add("userPic",System.Data.OleDb.OleDbType.Binary);
               // System.IO.BinaryWriter bw=new System.IO.BinaryWriter(file);
pc["userID"].Value=Convert.ToInt32(textBox1.Text);
pc["userName"].Value=textBox2.Text;
pc["userBirth"].Value=textBox3.Text;
pc["userNote"].Value=textBox4.Text;
byte[] imageData=new byte[file.Length];
file.Read(imageData,0,Convert.ToInt32(file.Length));
pc["userPic"].Value=imageData;
//ds.Tables[0].NewRow()
Con.Open();
cmd.ExecuteNonQuery();
Con.Close();
这个是添加数据进access数据库的代码Con.Open();
string select=" select * from UserInfo ";
cmd.CommandText=select;

reader=cmd.ExecuteReader();


if(reader.Read())
{
textBox1.Text=reader["userID"].ToString();
textBox2.Text=reader["userName"].ToString();
textBox3.Text=reader["userBirth"].ToString();
textBox4.Text=reader["userNote"].ToString();

byte[] imageData=(byte[])reader.GetValue(3);这个是读取数据库的代码.但是现在我如何把byte[]变成Image?
谢谢

解决方案 »

  1.   

    我要崩溃了.
    现在我改用sqlserver 2000 了但是我还是没有成功.而且异常越来越奇怪了.我想自杀了.谁行行好?给我看一段用ado.net往mssql里面添加图片和选取图片出来?
    if(open.ShowDialog()==DialogResult.OK)
    {
    System.IO.FileStream fs=(System.IO.FileStream)open.OpenFile();
    pb.Image=Image.FromStream(fs);
    fs.Close();
    }
    da.FillSchema(ds,SchemaType.Source);
    DataRow r=ds.Tables[0].NewRow();
    //System.IO.FileStream ms=new System.IO.FileStream("C:\\b.tmp",System.IO.FileMode.OpenOrCreate); //pb.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Bmp);

    //byte[] data=new byte[ms.Length];
    //ms.Read(data,0,data.Length);
    //ms.Close();
    pb.Image.Save("my.bmp");
    System.IO.FileStream ms=new System.IO.FileStream("./my.bmp",System.IO.FileMode.Open,System.IO.FileAccess.Read);
    byte[] data=new byte[ms.Length];
    ms.Read(data,0,data.Length);
    ms.Close();
    da.InsertCommand.Parameters[4].Value=data;
    da.InsertCommand.Parameters[0].Value=Convert.ToInt32(textBox1.Text);
    da.InsertCommand.Parameters[1].Value=textBox2.Text;
    da.InsertCommand.Parameters[2].Value=textBox3.Text;
    da.InsertCommand.Parameters[3].Value=textBox4.Text;
    Con.Open();
            da.InsertCommand.ExecuteNonQuery();
    Con.Close();
    //r=ds.Tables[0].Rows.Add(new object[]{Convert.ToInt32(textBox1.Text),textBox2.Text,textBox3.Text,textBox4.Text,});
    //status.Text+=da.Update(ds.Tables[0]);

    }
    catch(Exception ee)
    {
    status.Text=ee.Message;
    }
    异常啊.居然是a error occured in GDI+
      

  2.   

    byte[] data;
    Con.Open();
    System.Data.SqlClient.SqlDataReader r=da.SelectCommand.ExecuteReader();
    if(r.Read())
    {
    textBox1.Text=Convert.ToString(r.GetInt32(0));
    textBox2.Text=r.GetString(1);
    textBox3.Text=r.GetValue(2).ToString();
    textBox4.Text=r.GetString(3);
    data=(byte[])r.GetValue(4);
    System.IO.FileStream fs=new System.IO.FileStream("C:\\t.tmp",System.IO.FileMode.OpenOrCreate);
    fs.Write(data,0,data.Length);
    pb.Image=Image.FromStream(fs);
    fs.Close();
    count++;
    Con.Close();出现异常在 pb.Image=Image.FromStream(fs);我要晕了我要晕了~~~~说我invalid parameter 我想难道是从数据库里面没读正确的binary数组出来?