PDA

View Full Version : مشکل در update عکس ذخیره شده در بانک



bazardeh
دوشنبه 06 تیر 1390, 08:48 صبح
من در بانک خود به راحتی با کد MemoryStream عکس را در بانک ذخیره می کنم
ولی برای آپدیت با خطای زیر روبرو می شود


71644
کد استفاده شده ی من برای آپدیت اینه


MemoryStream ms = newMemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] arrImage = ms.GetBuffer();
ms.Close();
SqlConnection con = newSqlConnection("server=(local);database=School;integrated security=true;");
SqlCommand cm = newSqlCommand("update student set codstu=@1,name=@2,fname=@3,namefa=@4,pic=@11,Birth place=@12 where codstu= '" + dataGridView1.CurrentRow.Cells[0].Value.ToString() + "'", con);
cm.Connection = con;
cm.Parameters.AddWithValue("@1", Convert.ToInt32(textBox4.Text));
cm.Parameters.AddWithValue("@2", textBox1.Text);
cm.Parameters.AddWithValue("@3", textBox2.Text);
cm.Parameters.AddWithValue("@4", textBox3.Text);
cm.Parameters.AddWithValue("@11", SqlDbType.Binary).Value = arrImage;
cm.Parameters.AddWithValue("@12", textBox11.Text);
cm.ExecuteNonQuery();
con.Close();
}

وقتی که این کد ها مربوط به ذخیره عکس رو از برنامه غیر فعال و خذف می کنم برنامه درست شده و آپدیت می کند


pic=@11
cm.Parameters.AddWithValue("@11", SqlDbType.Binary).Value = arrImage;

bazardeh
دوشنبه 06 تیر 1390, 13:08 عصر
لطفا کمک کنید

bazardeh
دوشنبه 06 تیر 1390, 14:31 عصر
طریقه آپدیت فیلد های نوع image در پایگاه داده sql چگونه است آیا کد فوق درست است با تشکر

gwbasic
دوشنبه 06 تیر 1390, 15:39 عصر
کدت درسته البته از ms.ToArray() هم می تونی استفاده کنی ولی اگه Error رو سرچ کنی یه Bug ای بوده تو SqlServer 2005 (ورژن شما چیه؟) که با سرویس پکش حل می شه
ولی دلایل دیگه ای هم می تونه داشته باشه از جمله حجم زیاد عکس و همینطور بحث Cluster که بهتره یه سرچی بزنی مواردی که وجود داره رو بررسی کنی

bazardeh
دوشنبه 06 تیر 1390, 15:43 عصر
sql 2000 پس چرا یه مدت به من خطا نمی داد و چند روزه که خطا میده ؟؟
سیستم عامل 7
c# 2008

bazardeh
دوشنبه 06 تیر 1390, 15:46 عصر
من طور دیگه ای نمی تونم از pictureBox بخونم و در بانک ذخیره یا آن فیلد رو آپدیت کنم با تشکر

ma.rad
دوشنبه 06 تیر 1390, 16:17 عصر
آدرس عکس تو بانک ذخیره کن وعکسا رو تو یه پوشه بریز-picname از تو دیتابیس بش بده
ثبت:

System.IO.File.Copy(openFileDialog1.FileName, Application.StartupPath + "\\Pic\\" + picname + ".jpg");

ویرایش:

System.IO.File.Copy(openFileDialog1.FileName, Application.StartupPath + "\\Pic\\" + picname + ".jpg", true);

bazardeh
دوشنبه 06 تیر 1390, 17:09 عصر
با همین امکانات نمیشه کاری کرد
هیچ مشکلی در کد نیست
لطفا راهنمایی کنید

exlord
دوشنبه 06 تیر 1390, 20:37 عصر
codstu=@1, رو بردار فکر کنم درست بشه ...

bazardeh
دوشنبه 06 تیر 1390, 20:47 عصر
codstu=@1, رو بردار فکر کنم درست بشه ...
این فیلد کلید من است و طبق این ، رکوردی که باید آپدیت شود را پیدا می کنم

exlord
دوشنبه 06 تیر 1390, 21:02 عصر
این فیلد کلید من است و طبق این ، رکوردی که باید آپدیت شود را پیدا می کنم
("update student set codstu=@1,name=@2,fname=@3,namefa=@4,pic=@11,Birth place=@12 where codstu= '" + dataGridView1.CurrentRow.Cells[0].Value.ToString() + "'", con);

دقیقا مشکلت اینکه میخوای فیلد کلید رو هم Update کنی اینم میگه که فیلد کلید رو همزمان با image , text , ntext نمیتونم update کنم ...

AminSobati
دوشنبه 06 تیر 1390, 23:41 عصر
سلام دوست عزیزم،
متاسفانه شخصا با این خطا مواجه نشدم و تجربه اش نکردم. بد نیست به این لینک سری بزنین:
http://social.msdn.microsoft.com/forums/en-US/sqldataaccess/thread/4ea83434-808c-4450-ba66-006f5a3541c9/

bazardeh
سه شنبه 07 تیر 1390, 09:07 صبح
("update student set codstu=@1,name=@2,fname=@3,namefa=@4,pic=@11,Birth place=@12 where codstu= '" + dataGridView1.CurrentRow.Cells[0].Value.ToString() + "'", con);

دقیقا مشکلت اینکه میخوای فیلد کلید رو هم Update کنی اینم میگه که فیلد کلید رو همزمان با image , text , ntext نمیتونم update کنم ...

دستتون درد نکنه
از همه بزرگواران تشکر می کنم مشکلم حل شد

firoozi90
دوشنبه 17 بهمن 1390, 20:00 عصر
bazardeh عزیز
من کد شمارو با دیتابیس خودم نوشتم و کاملا جواب داد.باید دونکته رعایت کنی
1- کانکش و باز کنی
2- فیلد کلید هیچوقت نمی تونه ویرایش بشه با این کد
try
{
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] arrImage = ms.GetBuffer();
ms.Close();
con = new SqlConnection("server=(local);database=SRVCARD;integrated security=true;");
con.Open();
SqlCommand cm = new SqlCommand("update STUD set sname=@2,sfamil=@3,sreshte=@4,snimsal=@5,ssal=@6,s fish=@7,spic=@8,starikh=@9 where idstudent= '" + txtid.Text + "'", con);
cm.Connection = con;
cm.Parameters.AddWithValue("@2", txtname.Text);
cm.Parameters.AddWithValue("@3",txtfamil.Text);
cm.Parameters.AddWithValue("@4", txtreshte.Text);
cm.Parameters.AddWithValue("@5", cmbnimsal.SelectedItem);

cm.Parameters.AddWithValue("@6", cmbsal.SelectedItem);
cm.Parameters.AddWithValue("@7", txtfish.Text);
cm.Parameters.AddWithValue("@8", SqlDbType.Binary).Value = arrImage;
cm.Parameters.AddWithValue("@9", txttarikh.Text);
cm.ExecuteNonQuery();
con.Close();
MessageBox.Show("ویرایش اطلاعات با موفقیت انجام شد", " ویرایش ");
txtid.Clear();
txtfamil.Clear();
txtname.Clear();
txtreshte.Clear();
txtfish.Clear();
txttarikh.Clear();
}