Изображение из базы данных в Windows Forms - PullRequest
0 голосов
/ 16 марта 2012
private void button2_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("Data Source=SYS12;Initial Catalog=Teju;Integrated Security=True");
    SqlCommand cmd = new SqlCommand("Select Picture from tblImgData where id= " + listBox1.SelectedValue + " ", con);
    con.Open();
    byte[] byteImg = (byte[])cmd.ExecuteScalar();
    string strfn = Convert.ToString(DateTime.Now.ToFileTime());
    FileStream fs = new FileStream(strfn, FileMode.CreateNew, FileAccess.Write);
    fs.Write(byteImg, 0, byteImg.Length-1);
    fs.Flush();
    fs.Close();
    pictureBox1.Image = Image.FromFile(strfn);
}

Этот код показывает ошибку как "Out of memory." Что я могу делать не так, или как я могу отладить и решить эту проблему? Спасибо!

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

Используйте System.Drawing.Image Class, чтобы сохранить файл, а затем напрямую назначить это изображение вашему графическому блоку.

Проверьте это:

private void button2_Click(object sender, EventArgs e)
{

    SqlConnection con = new SqlConnection("Data Source=SYS12;Initial Catalog=Teju;Integrated Security=True");
    SqlCommand cmd = new SqlCommand("Select Picture from tblImgData where id= " + listBox1.SelectedValue + " ", con);
    con.Open();
    byte[] byteImg = (byte[])cmd.ExecuteScalar();
    string strfn = Convert.ToString(DateTime.Now.ToFileTime());
   Stream stream = new MemoryStream(byteImg);
Image img = System.Drawing.Image.FromStream(stream);

img.Save(strfn , ImageFormat.Jpeg);
    pictureBox1.Image = img;
}
1 голос
/ 16 марта 2012

Не избавление от ваших предметов не поможет.Либо используйте блоки try / finally , либо оператор using , чтобы очистить себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...