Loading PictureBox Image From Database

后端 未结 3 2073
逝去的感伤
逝去的感伤 2020-12-03 22:18

i\'m trying to load images from database to a PictureBox. I use these following codes in order to load them to my picture. I\'ve written some code but don\'t kn

相关标签:
3条回答
  • 2020-12-03 22:38
    private void btnShowImage_Click(object sender, EventArgs e)
    {
        string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\\PIS(ACU).mdb;";
        Con = new OleDbConnection(@constr);
        Con.Open();
        Com = new OleDbCommand();
        Com.Connection = Con;     
        Com.CommandText = "SELECT Photo FROM PatientImages WHERE Patient_Id =  " + val + " ";
        OleDbDataReader reader = Com.ExecuteReader();
        if (reader.Read())
        {
            byte[] picbyte = reader["Photo"] as byte[] ?? null;
            if (picbyte != null)
            {
                MemoryStream mstream = new MemoryStream(picbyte);
                pictureBoxForImage.Image = System.Drawing.Image.FromStream(mstream);
            {
            System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(mstream);
        }
    }
    
    0 讨论(0)
  • 2020-12-03 22:43

    Assuming we have a simple database with a table called BLOBTest:

    CREATE TABLE BLOBTest
    (
    BLOBID INT IDENTITY NOT NULL,
    BLOBData IMAGE NOT NULL
    )
    

    We could retrieve the image to code in the following way:

    try
    {
        SqlConnection cn = new SqlConnection(strCn);
        cn.Open();
    
        //Retrieve BLOB from database into DataSet.
        SqlCommand cmd = new SqlCommand("SELECT BLOBID, BLOBData FROM BLOBTest ORDER BY BLOBID", cn);   
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds, "BLOBTest");
        int c = ds.Tables["BLOBTest"].Rows.Count;
    
        if(c>0)
        {   //BLOB is read into Byte array, then used to construct MemoryStream,
            //then passed to PictureBox.
            Byte[] byteBLOBData =  new Byte[0];
            byteBLOBData = (Byte[])(ds.Tables["BLOBTest"].Rows[c - 1]["BLOBData"]);
            MemoryStream stmBLOBData = new MemoryStream(byteBLOBData);
            pictureBox1.Image= Image.FromStream(stmBLOBData);
        } 
        cn.Close();
    }
    catch(Exception ex)
    {MessageBox.Show(ex.Message);}
    

    This code retrieves the rows from the BLOBTest table in the database into a DataSet, copies the most recently added image into a Byte array and then into a MemoryStream object, and then loads the MemoryStream into the Image property of the PictureBox control.

    Full reference guide:

    http://support.microsoft.com/kb/317701

    0 讨论(0)
  • 2020-12-03 22:59

    Continue with something like this in the button1_Click:

    // Your code first, here.
    
    var da = new SqlDataAdapter(cmd);
    var ds = new DataSet();
    da.Fill(ds, "Images");
    int count = ds.Tables["Images"].Rows.Count;
    
    if (count > 0)
    { 
        var data = (Byte[])ds.Tables["Images"].Rows[count - 1]["Image"];
        var stream = new MemoryStream(data);
        pictureBox1.Image = Image.FromStream(stream);
    } 
    
    0 讨论(0)
提交回复
热议问题