如何从访问数据库中检索照片

时间:2013-05-20 09:42:51

标签: c# ms-access picturebox

private void Profile_Load(object sender, EventArgs e)
{
    OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=  C:\Users\jay.desai\Documents\Visual Studio 2008\Projects\Employee Profile\Employee.mdb");
    OleDbCommand cmd = new OleDbCommand("select * from Profile where Emp_No=" + txtEmployeeNo.Text + "", con);
    cmd.CommandType = CommandType.Text;
    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds, "Profile");
    txtEmployeeNo.Text = ds.Tables[0].Rows[0][0].ToString();
    txtName.Text = ds.Tables[0].Rows[0][1].ToString();
    txtAddress.Text = ds.Tables[0].Rows[0][2].ToString();
    txtSex.Text = ds.Tables[0].Rows[0][3].ToString();
    txtMobNo.Text = ds.Tables[0].Rows[0][4].ToString();
    dtp.Text = ds.Tables[0].Rows[0][5].ToString();
    textBox1.Text = ds.Tables[0].Rows[0][6].ToString();
    pictureBox1.Image = ds.Tables[0].Rows[0][7];
}

我在ms访问中创建了一个数据库,其中有一个名为Profile的表,其中包含一个字段Photo has OLE Object Datatype我在字段中手动插入了一个.bmp图像现在我想在图片框中检索该图像但是在运行时我收到此错误“无法将类型'对象'隐式转换为'System.Drawing.Image'。存在显式转换(您是否错过了转换?)”

1 个答案:

答案 0 :(得分:0)

您需要Image类型对象来设置图片框图像,这样您就可以使用内存流和Image.FromStream方法来获取图像

byte[] bimg= (byte[])ds.Tables[0].Rows[0][7];
MemoryStream mstream = new MemoryStream(bimg);
pictureBox1.Image = Image.FromStream(mstream);