PDA

View Full Version : سوال: خطا در خواندن عکس و نمایش آن در picturebox



h.rezaee
چهارشنبه 21 فروردین 1392, 16:35 عصر
سلام. بنده از کدهای زیر برای نمایش عکس استفاده می کنم :

SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=Fajr;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
try
{
con.Open();
cmd.Connection = con;
int k = Convert.ToInt16(memberdel.idozv);
cmd.CommandText = "SELECT picdate FROM deltbl WHERE (filenum=@filenum)";
cmd.Parameters.AddWithValue("@filenum", k);
//cmd.Parameters.AddWithValue("@lname", lnametxt.Text);
byte[] Img = (byte[])cmd.ExecuteScalar();

string str = Convert.ToString(DateTime.Now.ToFileTime());
FileStream fs = new FileStream(str, FileMode.CreateNew, FileAccess.Write);
fs.Write(Img, 0, Img.Length);
fs.Flush();
fs.Close();
pictureBox1.Image = Image.FromFile(str);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);

}
finally
{
con.Close();
}

منتها خطای زیر رو نمایش میده. ممنون میشم اگه راهنمایی کنید.

veniz2008
چهارشنبه 21 فروردین 1392, 21:08 عصر
سلام.
کد مربوط به بلاک try رو بصورت زیر بنویسید:

SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=Fajr;Integrated Security=True");
try
{
SqlDataAdapter da = new SqlDataAdapter("SELECT picdate FROM deltbl WHERE filenum = @filenum",con);
da.SelectCommand.Parameters.AddWithValue("@filenum", Convert.ToInt16(memberdel.idozv));
DataTable dt = new DataTable();
da.Fill(dt);
byte[] picture = (byte[])dt.Rows[0][0];
MemoryStream ms = new MemoryStream(picture);
ms.Seek(0, SeekOrigin.Begin);
pictureBox1.Image = Image.FromStream(ms);
}
موفق باشید.

h.rezaee
چهارشنبه 21 فروردین 1392, 23:08 عصر
سلام.
کد مربوط به بلاک try رو بصورت زیر بنویسید:

SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=Fajr;Integrated Security=True");
try
{
SqlDataAdapter da = new SqlDataAdapter("SELECT picdate FROM deltbl WHERE filenum = @filenum",con);
da.SelectCommand.Parameters.AddWithValue("@filenum", Convert.ToInt16(memberdel.idozv));
DataTable dt = new DataTable();
da.Fill(dt);
byte[] picture = (byte[])dt.Rows[0][0];
MemoryStream ms = new MemoryStream(picture);
ms.Seek(0, SeekOrigin.Begin);
pictureBox1.Image = Image.FromStream(ms);
}
موفق باشید.
ممنون دوست عزیز . الان هیچ پیغام و ارروری نمیده ولی باز هم عکس رو نمایش نمیده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ چرا؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

mahtab.kamali
چهارشنبه 21 فروردین 1392, 23:26 عصر
با سلام

شاید هنوز هیچ عکسی داخل دیتابیس وارد نکردی !!!!!!!!!!!!!

veniz2008
پنج شنبه 22 فروردین 1392, 11:50 صبح
ممنون دوست عزیز . الان هیچ پیغام و ارروری نمیده ولی باز هم عکس رو نمایش نمیده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ چرا؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
شاید برای اون رکورد عکسی ذخیره نکردید.
نوع فیلدتون رو varbinary(max) یا Image بگیرید( توصیه به استفاده از نوع Image نمیکنم).
این موارد رو بررسی کنید. اگر مشکلتون حل نشد کد مربوط به درج عکس رو بزارید.