PDA

View Full Version : سوال: اجرا نشدن دو دستور SELECT در یک کد فرمان



morika
چهارشنبه 21 تیر 1391, 15:16 عصر
سلام
من تو بانک عکس رو ذخیره می کنم و بعد می خوام عکس رو تو picturebox نشون بده. حالا برای اینکار باید از دوتا دستور SELECT استفاده کنم. یکی برای نمایش اطلاعات و یکی دیگه برای نمایش عکس. (چون برای نمایش اطلعات باید از دستور SELECT * FROM استفاده کنم ولی برای نمایش عکس فقط باید ستون تصویر رو SELECT کنم) ولی دستور SELECT دوم اصلا اجرا نمیشه. چرا؟
SqlCommand cmd = new SqlCommand("SELECT * FROM [Person] WHERE id = '" + id + "'", con);
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.HasRows == true)
{
while (sdr.Read())
{
parent.Text = sdr["parent_id"].ToString();
alias.Text = sdr["alias"].ToString();
birthday.Text = sdr["birthday"].ToString();
deathday.Text = sdr["deathday"].ToString();
birth_place.Text = sdr["birth_place"].ToString();
life_place.Text = sdr["life_place"].ToString();
job.Text = sdr["job"].ToString();
mate_name.Text = sdr["mate_name"].ToString();
tomb.Text = sdr["tomb"].ToString();
tomb.Text = sdr["biography"].ToString();
date.Text = sdr["date"].ToString();
}
}

SqlCommand img = new SqlCommand("SELECT image FROM [Person] WHERE id = '" + id + "'", con);
MemoryStream stream = new MemoryStream();
byte[] image = (byte[])img.ExecuteScalar();
stream.Write(image, 0, image.Length);
Bitmap bitmap = new Bitmap(stream);
pictureBox1.Image = bitmap;
Application.DoEvents();
con.Close();

mohamadlvs
چهارشنبه 21 تیر 1391, 15:51 عصر
سلام من نمی دونم چرا دستور دوم اجرا نمیشه . اما فک کنم بشه در یک دستور همه اطلاعات رو بدست آورد
در همون سلکت اولت
SqlDataAdapter da = new SqlDataAdapter(com);
DataTable dt = new DataTable();
da.Fill(dt);
byte[] arrPicture = ((byte[])(dt.Rows[0]["pic"]));
MemoryStream ms = new MemoryStream(arrPicture);
pictureBox1.Image = Image.FromStream(ms);

البته نام فیلد ها رو تک تک در دستور سلکت بیارید
العان همه اطلاعاتتون در dt هست و شما با انتخاب dt.Rows[0]["columnName"] به مقادیرتان دستیابی داشته باشید و از SqlDataReader هم استفاده نکنید