PDA

View Full Version : سوال: نمایش ندادن عکس ثبت شده در database



daniyaltjm
دوشنبه 22 شهریور 1395, 15:47 عصر
سلام من عکس رو توی دیتابیس ذخیره کردم ولی موقع خوندن خطا میده:

public void ShowImage()
{
try
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=TelAddress;Integrated Security=True");
SqlCommand cm = new SqlCommand("select Img from Tbl_Cnt where Cnt_ID='"+ id +"' ");
cm.Connection = con;
con.Open();
byte[] arry = null;
SqlDataReader dr = cm.ExecuteReader();
if(dr.HasRows )
{
while(dr.Read())
{
arry = (byte[])dr["Img"];
}
}
dr.Close();
MemoryStream mymemory = new MemoryStream(arry);
pictureBox1.Image = Image.FromStream(mymemory);

con.Close();
}
catch
{
}

daniyaltjm
دوشنبه 22 شهریور 1395, 21:48 عصر
ممنون از همه که کمک کردن!

با این روش مشکل حل شد

ابتدا این ها رو در قسمت پابلیک فرم قرار میدیم:
byte[] b = null;
MemoryStream memory = new MemoryStream();


سپس یک تابع میسازیم برای تبدیل عکس به آرایه ای از بایت ها:
//ReadImageToByte................................... .
public byte[] ReadImageToByte()
{
OpenFileDialog op = new OpenFileDialog();
if (op.ShowDialog() == DialogResult.OK)
{
FileStream fs = new FileStream(op.FileName, FileMode.Open);
b = new byte[fs.Length];
fs.Read(b, 0, b.Length);
return b;
}
return null;
}
//End-ReadImageToByte.................................

حالا یک تابع میسازیم که عکسی که درون دیتابیسمون به صورت آرایه ای از بایتها قرار دادیم رو بخونیم و نمایش بدیم:

public void LoadImage()
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=TelAddress;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select * from Tbl_Cnt where Cnt_ID='" + id + "' ", con);
DataTable dt = new DataTable();
da.Fill(dt);
b = (byte[])dt.Rows[0][4];
MemoryStream m = new MemoryStream(b);
pictureBox1.Image = Image.FromStream(m);
}
//End-LoadImage......................................