PDA

View Full Version : سوال: مشکل با آپدیت



water_lily_2012
پنج شنبه 21 مهر 1390, 17:30 عصر
سلام
من از کد زیر برای آپدیت رکورد استفاده می کنم. همه فیلد ها ذخیره میشه بجز عکس، البته فکر کنم ذخیره میشه ولی دوباره عکس را لود نمی کنه.



public int UpdateMember(string oldCode, string code, string firstName, string lastName, string father, string nationalNumber, string tel, string mobile, int numberOfHonesty, string address, string explain, byte[] picture)
{
string QueryString = "UPDATE TBLMember SET Code='" + code + "', FirstName='" + firstName + "', LastName='" + lastName + "', Father='" + father + "', NationalNumber='" + nationalNumber + "', Tel='" + tel + "', Mobile='" + mobile + "', NumberOfHonesty='" + numberOfHonesty + "', Address='" + address + "', Explain='" + explain + "', Picture='" + picture + "' WHERE Code='" + oldCode + "'";
return ExecuteNoneQuery(CommandType.Text, QueryString);
}

relax_cp
پنج شنبه 21 مهر 1390, 20:02 عصر
خوب برای برداشتن عکس میشه از این کد استفاده کرد:
ابتدا باید فیلد picture را بصورت آرایه بریزی توی یک متغیر از نوع byte[] بعد از کد زیر استفاده کن. مثلا مقدار فیلد picture را بصورت .ToArray() بریزید توی یک متغیر بنام مثلا file که از نوع byte[] هست بعد از این کد استفاده کن:


MemoryStream mStream = new MemoryStream();
mStream.Write(files, 0, files.Length);
FileStream fileStream = File.Open(@"C:\1.jpg", FileMode.Create);
mStream.WriteTo(fileStream);
fileStream.Close();


بازم مشکلی بود من در خدمتم

water_lily_2012
جمعه 22 مهر 1390, 10:21 صبح
سلام
تشکر از جوابتون. ولی یا من متوجه منظور شما نشدم یا شما.
راستش من با این کد متغیر bData را پر می کنم و سپس به تابع بالایی ارسال می کنم. در هنگام ساخت رکورد (تابعی که برای ایجاد رکورد می باشد) مشکلی نیست و عکس ذخیره می شود. ولی در هنگام آپدیت و استفاده از این تابع عکس ذخیره می شود ولی دیگر باز نمیشه.
برای همین مجبور شدم به جای آپدیت ابتدا رکورد مورد نظر را پاک کنم و دوباره ایجاد کنم.
این هم کد من :



// create an open file dialog
System.Windows.Forms.OpenFileDialog dlgOpen = new System.Windows.Forms.OpenFileDialog();
// set properties for the dialog
dlgOpen.Title = "Select an Image";
dlgOpen.ShowReadOnly = false;
dlgOpen.Filter = "(*.jpeg)|*.jpg";
// display the dialog and return results
if (dlgOpen.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
PictureBox1.Source = new BitmapImage(new Uri(dlgOpen.FileName));
FileInfo fi = new FileInfo(dlgOpen.FileName);
// Read file data into buffer
using (FileStream fs = fi.OpenRead())
{
bData = new byte[fi.Length];
int nReadLength = fs.Read(bData, 0, (int)(fi.Length));
}
}


البته از BitmapImage تعجب نکنید، چون من در wpf کد نویسی کرده ام و منظور از pictureBox1 هم شی image هست. البته من بیشتر با دستور آپدیت SQL مشکل دارم، چون دستور Insert درست عمل می کنه.

relax_cp
جمعه 22 مهر 1390, 16:51 عصر
خوب من متوجه نشدم که شما بالاخره نمیتونید فایل رو یعنی همون عکس رو بعد از خوندن از بانک ببینید یا اینکه نمیتونید اون رو آپدیت کنید؟
اگه دیدن عکس منظور شماست همون کدی که نوشتم رو میتونید تحلیل کنید و ازش استفاده کنید ولی اگه منظورتون آپدیت نشدن باشه یا اینکه آپدیت با مشکل انجام میشود باید بیشتر توضیح بدید که چه خطایی احتمالا برمیگرداند.

water_lily_2012
دوشنبه 25 مهر 1390, 16:21 عصر
سلام
راستش من با آپدیت مشکل دارم. نه با خواندن عکس.
وقتی به کد قبلی من نگاه کنید می بینید که عکس را باز کرده و خوانده و تبدیل به نوع بایت می کنم و الان برای ذخیره در بانک اطلاعاتی آماده است.

حالا اگر از دستور Insert استفاده کنم عکس و مقادیر دیگر ستون ها بدون مشکل تشکیل یک رکورد را در پایگاه داده می دهد. و بعد هم همه اطلاعات بدون مشکل خوانده می شود.
اما اگر از دستور update استفاده کنم. همه مقادیر در بانک ذخیره می شود حتی عکس ولی نمی دانم چرا عکس دیگر خوانده نمی شود. (یعنی فکر کنم عکس در بین راه آپدیت اطلاعات خود را از دست می دهد.)
اینجا را توجه کنید که من مشکل با خواندن عکس از پایگاه ندارم. مشکل اینجاست که اگر یک فیلد عکس را آپدیت کنم عکس موجود در فیلد از بین می رود و عکس جدید هم جایگزین نمی شود.
فکر کنم این بار دقیق توضیح دادم.

water_lily_2012
پنج شنبه 28 مهر 1390, 11:33 صبح
کسی نمی دونی مشکل آپدیت این عکس چیه