PDA

View Full Version : نشان دادن عکس از دیتابیس در یک picture box



farnoosh66
پنج شنبه 19 آذر 1394, 14:58 عصر
با سلام
دوستان یه عکسی که توئ یه table ذخیره کردمو می خوام توی یدونه picture box نشونش بدم.
کد زیر نوشتم،ولی خطا داره.میگه باید کانورت کنی .لطفا راهنمایی کنید
با تشکر



SqlDataAdapter da = new SqlDataAdapter("select* from tblsoal",con );
DataTable dt = new DataTable();
da.Fill(dt);

pictureBox1.Image = dt;

حسین.کاظمی
پنج شنبه 19 آذر 1394, 15:16 عصر
سلام
به چه روشی عکس را ذخیره کردید؟؟؟؟
اگه امکانش هست کدهای استفاده شده را بزارید تا بتونیم راهنماییتون کنیم!
موفق باشید

farnoosh66
پنج شنبه 19 آذر 1394, 15:36 عصر
SqlCommand sqlCom = new SqlCommand();
sqlCom.Connection = con;


//byte[] b = ReadFileToByte();
// sqlCom.Parameters.AddWithValue("",b);
// sqlCom.CommandText = "update tblsoal set TextSoal_pic='" +b+ "'Where id=" + 1 + "";
sqlCom.CommandText = "insert into tblsoal (TextSoal_Pic) values(@TextSoal_Pic)";
byte[] b = ReadFileToByte();
sqlCom.Parameters.AddWithValue("@TextSoal_Pic",b);
con.Open();
sqlCom.ExecuteNonQuery();
con.Close();
FMessegeBox.FarsiMessegeBox.Show("کاربر گرامی", "عکس مورد نظر با موفقیت ذخیره شد");
SqlDataAdapter da = new SqlDataAdapter("select* from tblsoal",con );
DataTable dt = new DataTable();
da.Fill(dt);

pictureBox1.Image = dt;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
// dataGridView1.DataSource = dt;





public byte[] ReadFileToByte()
{
OpenFileDialog op = new OpenFileDialog();
if (op.ShowDialog() == DialogResult.OK)
{
FileStream fs = new FileStream(op.FileName,FileMode.Open);
byte[] b = new byte[fs.Length];
fs.Read(b, 0, b.Length);
return b;
}
return null;
}

حسین.کاظمی
پنج شنبه 19 آذر 1394, 15:51 عصر
برای ذخیره عکس در دیتا بیس از کد زیر استفاده کن

System.IO.MemoryStream ms = new System.IO.MemoryStream();
img.Save(ms, picpersonel.Image.RawFormat);

byte[] arrPic = ms.GetBuffer();
ms.Close();


و آرایه arrPic را در بانک ذخیره کن در برنامه شما به جای 'b' جایگزین کن

کد نمایش عکس (البته من در این روش به صورت پارامتری نوشتم)


ابتدا در محیط کد نویسیت یک تابع ایجاد کن و هرکجا خواستی این تابع را صدا بزن


private void pic_reader()
{
try
{
if (pictureBox1.Image == null)
{
pictureBox1.Image = imageList1.Images[0];
}
else
{
SqlConnection con = new SqlConnection(رشته اتصال به بانک);
con.Open();
SqlCommand com = new SqlCommand("select pic_ from tabel where id= @pic", con);
com.Parameters.AddWithValue("@pic", this.dataGridView1.CurrentRow.Cells[0].Value);
byte[] myarray = null;

SqlDataReader DataR = com.ExecuteReader();
if (DataR.HasRows)
{
while (DataR.Read())
{
myarray = (byte[])DataR["pic_"];
}
}
DataR.Close();
System.IO.MemoryStream mymemory = new MemoryStream(myarray);
this.pictureBox1.Image = Image.FromStream(mymemory);
com.ExecuteNonQuery();
con.Close();

}


پیکچر باکس یادت نره بزاری

موفق باشی

farnoosh66
پنج شنبه 19 آذر 1394, 16:36 عصر
ممنون از راهنمایی کاملت
ولی راستش نتونستم با این روش تو دیتابیس ثبت کنم،
img و picpersonel نمیدونم چیه!!
ممنون میشم بیشتر راهنمایی کنی

ebrahim.rayatparvar
پنج شنبه 19 آذر 1394, 16:51 عصر
شما داحل انجمن جستجو کنید یا سایت هایی مثل CodeProject و یا StackOverFlowe جستجو کنید ذخیره عکس در دیتابیس راه های ذخیره و بازیابی عکس که تبدیل عکس به باینری و برعکس تبدیل باینری به عکس کلی برای شما با نمونه کد میاد یک بار هم در انجمن در این مورد بحث شده و چندین روش برای ذخیره و بازیابی عکس به روش باینری داده شده .

حسین.کاظمی
پنج شنبه 19 آذر 1394, 17:40 عصر
img و picpersonel نمیدونم چیه!!


ببخشید یادم رفت اینا راهم بگم آخه کد هامو از یه پروژه هام کپی پیست کردم :لبخند:
قبل از رویداد load فرم بنویس

image img;
//بجای img هراسمی دوست داری بنویس.


picpersonel اینم اسم پیکچر باکسم بود:لبخند::لبخندساده:

موفق باشی