PDA

View Full Version : دخیره تصاویر در sql!!!!!!!!!



mazaher5723
پنج شنبه 11 خرداد 1391, 00:32 صبح
سلام دوستان
چه جوری میشه یک تصویرو تو sql دخیره/بازیابی کنیم؟(منظور با استفاده از linq هستا)
ساختن دیتا بسیو بلدما
یک فیلد دارم به نام img از نوع Image
با تشکر فراوان
مظاهر

علیرضا حسن زاده
پنج شنبه 11 خرداد 1391, 10:45 صبح
باید اطلاعات عکس رو به صورت ارایه بایت تبدیل کنی(می تونی تو MemoryStream ذخیره کنی) و ارایه رو تو دیتابیس ذخیره کنی در موقع بازیابی هم عکس این کار رو انجام میدی

samadblaj
پنج شنبه 11 خرداد 1391, 12:12 عصر
ببخشید MemoryStream چیه؟

hojati
پنج شنبه 11 خرداد 1391, 16:58 عصر
اول بایدعکسو به بایت تبدیل کنی در ضمن باید فیلدتم تو بانک از نوع باینری باشه

یه نمونه برات میزارم Bitmap bt = new Bitmap(pictureBox1.Image, pictureBox1.Image.Width, pictureBox1.Image.Width);
MemoryStream stream = new MemoryStream();
bt.Save(stream, ImageFormat.Jpeg);
stream.Position = 0;
byte[] data = new byte[stream.Length + 1];
stream.Read(data, 0, data.Length);

بعد متغیر data رو که همون عکست هست که به باینری تبدیل شده تو بانک ذخیره میکنی، هیج فرقی هم نمیکنه از چه روشی داری استفاده میکنی ado یا linq

samadblaj
پنج شنبه 11 خرداد 1391, 17:58 عصر
ممنونم دوست عزیز ولی این روش احتمالا عکس به دیتابیس منتقل میشه حجم دیتا بیس بالا نمیره؟ سرعت کاهش پیدا نمیکنه؟

اگه بخوام فقط آدرس عکس رو ذخیره کنم باید نوع را از چی انتخاب کنم؟ nvarchar(max)؟

mazaher5723
پنج شنبه 11 خرداد 1391, 18:12 عصر
منم نظرم با شماست ولی اصلا معقولانه نیست ادرسو ذخیره کنیم

علیرضا حسن زاده
پنج شنبه 11 خرداد 1391, 19:13 عصر
منم نظرم با شماست ولی اصلا معقولانه نیست ادرسو ذخیره کنیم
هر دو روش ذخیره دیتای عکس و آدرس عکس مربوط میشه به نوع کاری که می خواین انجام بدین و چند بار می خواین عملیات CURD رو برای این دیتا ها انجام بدین هچنین اندازه فایل عکس رو برای پروژه در نظر داشته باشین درکل بستگی به نوع عمیلاتی داره که می خواید انجام بدین ضمنا SQLServer یه خاصیت برای FileStream هم داره که می تونید از اون هم برای کارهای فیلی استفاده کنید فکر کنم از نسخه 2008 به بعد باشه ولی دقیق نمیدونم چون تا جایی که یادمه تو 2005 ندیده بودم این روش هم احتمالا روش مناسبی باشه

hojati
پنج شنبه 11 خرداد 1391, 19:36 عصر
من خودمم برام این سواال هست که کدوم روش بهتره ذخیره آدرس یا ذخیره عکس بصورت باینری اما اگه بخواهی آدرس ذخیره کنی از varchar استفاده کن

samadblaj
جمعه 12 خرداد 1391, 08:01 صبح
منم نظرم با شماست ولی اصلا معقولانه نیست ادرسو ذخیره کنیم

چرا؟

ممنونم ولی نظر من اینه که آدرس عکس رو ذخیره کنیم و برنامه با همون تابه IO.File فایل عکس رو داخل پوشه برنامه یه پوشه مخصوص انتقال بده، بهتر نیست؟