PDA

View Full Version : Image در DataBase (خیلی فوری)



فاطمه هاشمیان
شنبه 21 خرداد 1384, 14:25 عصر
من در یک فرم میخوام کاربر در صورت تمایل عکس را وارد کند موقعی که اطلاعات را از کاربر میگیرم اگر عکس وارد نشده باشد
موقع ثبت اطلاعات در این فیلد در DataBase هیچ مقداری وارد نمیکنم و اطلاعات بدن هیچ مشکلی ثبت میشود اما موقعی که میخوام اطلاعات رو از DataBse در یافت کنم این کد را نوشتم

if(dataSet11.table[0].picture_t.Equals(DBNull.Valu e))
{
PictureBoxSelect.Image.Dispose();
}
else if(!dataSet11.table[0].picture_t.Equals(DBNull.Val ue))
{
byte[] arrPicture = ((byte[]) (dataSet11.table[0].picture_t));

MemoryStream ms = new MemoryStream(arrPicture);
PictureBoxSelect.Image = Image.FromStream(ms);
PictureBoxSelect.SizeMode = PictureBoxSizeMode.CenterImage;
PictureBoxSelect.BorderStyle = BorderStyle.Fixed3D;
PictureBoxSelect.BringToFront();
}
اما این Error را میگیرد :sad2: :گیج:

An unhandled exception of type 'System.Data.StrongTypingException' occurred in system.windows.forms.dll

Additional information: Cannot get value because it is DBNull.
زمان پروژه من داره تموم میشه لطفا"اگر کسی میدونه با کد راهنمایی کنه
با تشکر فراوان [/quote]

سار
شنبه 21 خرداد 1384, 14:51 عصر
این رو برسی کنید.

فاطمه هاشمیان
یک شنبه 22 خرداد 1384, 14:55 عصر
از راهنمایی شما ممنونم DataBase من Access بود و من وقتی کاربر عکس را وارد نمیکرد Access با مقادیر Null مشکل پیدا میکرد از یه راه دیگه استفاده کردم کاربر عکسی رو که وارد میکنه یه نمونش رو در یه File در Directory جاری برنامم کپی میکنم و بعد عکسها را از اونجا Search میکنم دیگه با DataBase کاری نداره و مشکل پیدا نمیکنه :موفق:
باز هم از توجه شما ممنونم :)

شفیعی
پنج شنبه 27 مرداد 1390, 10:25 صبح
سلام
به چه روشی میتوان عکس را در بانک اکسس ذخیره نمود هر نوع عکس با هر نوع فرمت .

Farshid007
پنج شنبه 27 مرداد 1390, 14:35 عصر
سلام
تو تیبل باید یه فیلد به نوع Image درست کنید
سپس عکس رو با این تابع به کد باینری (Byte[])تبدیل کنید:
public Byte[] ConvertImageToByte(Image image)
{
System.Drawing.Bitmap Bmp = new System.Drawing.Bitmap(image);

System.IO.MemoryStream MS = new MemoryStream();
Bmp.Save(MS,System.Drawing.Imaging.ImageFormat.Png );
return MS.ToArray();
}
نکته :این تابع عکس رو با فرمت PNG (بهترین فرمت)ذخیره میکند اگه بخواهید می توانید انرا عوض کنید.
سپس در فیلد مورد نطر اینسرت کنید
خواندن عکس:
ابتدا با SQL DATA READER
فیلد عکس رو بخونید و سپس انرا تبدیل به []Byte کنید
وبرای تبدیل ارایه ای از بایت ها به عکس از این استفاده کنید:
public Image ConvertByteToImage(Byte[] bytes)
{
System.IO.MemoryStream MS = new MemoryStream(bytes);
return Image.FromStream(MS);
}