PDA

View Full Version : ذخیره عکس در دیتابیس به روشی دیگر



vb_nima
پنج شنبه 20 اردیبهشت 1386, 18:39 عصر
همونطور که میدونید برای ذخیره عکس در دیتابیس ابتدا عکس را از داخل picturebox داخل هارد ذخیره میکنیم و سپس اونرا با متد get در یک آرایه بایت می ریزیم.
من باید تصاویر زیادی را پشت سر هم ذخیره کنم و سرعت هم برام خیلی مهمه.
حالا سوالم اینکه چطور میشه ذخیره در هارد را برداشت تا سرعت زیادتر بشه. یعنی آیا میشه به جای ذخیره در هارد در یک قسمت از رم ذخیره کرد و بعد اون قسمت را در دیتابیس قرار داد؟

CodeMasterX
دوشنبه 24 اردیبهشت 1386, 01:51 صبح
درست یادم نیست پس اگر اشتباه بود خودتون عذر خواهی رو لحاظ کنید.
اگر درست یادم باشه میشه اینجوری هم نوشت:



rs.Fields("Image").Value = Picture1.Piucture
rs.Update
rs.Update adAffectAllChapters
فراموش نشه که فرمت فیلد باید OLE (در اکسس) و Image در SQLServer باشه.

Mahdad999
دوشنبه 24 اردیبهشت 1386, 06:20 صبح
اصولا ذخیره کردن تصویر مخصوصا برای شما که سرعت هم براتون مهمه با این روش منطقی نیست . بهترین کار ذخیره آدرس تصویر در دیتا بیس است

CodeMasterX
سه شنبه 25 اردیبهشت 1386, 23:56 عصر
اصولا ذخیره کردن تصویر مخصوصا برای شما که سرعت هم براتون مهمه با این روش منطقی نیست . بهترین کار ذخیره آدرس تصویر در دیتا بیس است

برای برنامه های تحت ویندوز شدیدا با این روش مخالفم!
اگر بعدا کاربری اسم و مسیر فایل های ثبت شده رو روی هارد دیسک تغییر داد چی ؟
بهترین راه همون ذخیره عکس ها بصورت باینری در دیتابیس هست.این روشی که شما میگین برای وب سایت ها خوبه که نمیشه به این راحتی ها مسیر و نام فایل ها رو عوض کرد مگر خود مدیر وب سایت که اون هم مریض نیست که همچین کاری بکنه.

S_VB.max
چهارشنبه 26 اردیبهشت 1386, 01:12 صبح
برای برنامه های تحت ویندوز شدیدا با این روش مخالفم!
اگر بعدا کاربری اسم و مسیر فایل های ثبت شده رو روی هارد دیسک تغییر داد چی ؟
بهترین راه همون ذخیره عکس ها بصورت باینری در دیتابیس هست.این روشی که شما میگین برای وب سایت ها خوبه که نمیشه به این راحتی ها مسیر و نام فایل ها رو عوض کرد مگر خود مدیر وب سایت که اون هم مریض نیست که همچین کاری بکنه.

اگر سیستمی باشه که تنها مدیر با آن کار می کنه و تمامی عکسها در یک پوشه قرار بگیره از این لحاظ فکر نمی کنم مشکل داشته باشه و همینطوری که Mahdad999 اشاره کردند با وجود حجم کم دیتابیس سرعت پردازش رکوردها هم افزایش پیدا میکنه
اما اگر عکس ها بصورت باینری در دیتابیس ذخیره بشوند ، امنیت بین اطلاعات و عکسها و همچنین پشتیبان گیری - بازیابی دیتابیس یکپارچه میشه

CodeMasterX
چهارشنبه 26 اردیبهشت 1386, 20:25 عصر
ببین دوست عزیز،اگر این روش قرار باشه روی یک وب سایت پیاده باشه،همونطوری که گفتم خوبه.چرا که فقط مدیر یا مدیران وب سایت به فایل ها دسترسی دارن.
ولی اگر این کار برای یه برنامه ویندوزی (Desktop App) استفاده بشه اونوقت مشکل ساز میشه.چرا ؟ چون کاربر ویندوز به فایلهای عکس دسترسی داره و اینکه بخوایم به فکر پنهان کردن و یا محدود کردن دسترسی به این فایل ها هم باشیم کار منطقی نیست.
در ضمن باید بگم که مایکروسافت در راهنمای MSDN مربوط به آفیس 2003 نوشته که بانک اکسس هر رکوردی تا سقف حجم 1 گیگا بایت رو به خوبی پشتیبانی میکنه و من این رو امتحان کردم و صحت هم داره.دیگه مابقی سرعت دسترسی به داده ها به الگوریتم ها و روش های بازیابی اطلاعات برنامه بستگی داره که به عهده برنامه نویس هست که بهترین روش رو انتخاب کنه.

choobin84
چهارشنبه 26 اردیبهشت 1386, 21:46 عصر
برای برنامه های تحت ویندوز شدیدا با این روش مخالفم!
اگر بعدا کاربری اسم و مسیر فایل های ثبت شده رو روی هارد دیسک تغییر داد چی ؟
بهترین راه همون ذخیره عکس ها بصورت باینری در دیتابیس هست.این روشی که شما میگین برای وب سایت ها خوبه که نمیشه به این راحتی ها مسیر و نام فایل ها رو عوض کرد مگر خود مدیر وب سایت که اون هم مریض نیست که همچین کاری بکنه.


ولی سرعتی که در ذخیره آدرس در بانک وجود داره، بسیار بالاتره. نمیشه انکار کرد.

CodeMasterX
چهارشنبه 26 اردیبهشت 1386, 22:53 عصر
همیشه سرعت ملاک نیست دوست عزیز.
برنامه باید امنیت و داده ها باید اعتبار داشته باشن.

vb_nima
چهارشنبه 26 اردیبهشت 1386, 23:12 عصر
ببینید دوستان اصلا سرعت بازیابی برام اصلا مهم نیست.چون هر عکس تقریبا 1 یا 2 کیلوبایت حجم داره (آیکون هستند) .
از روش آدرس هم نمی خوام استفاده کنم با نظر آقای CodeMasterX کاملا موافقم.
من فقط میخوام در هنگام ذخیره عکسها "ذخیره در هارد " را حذف کنم. و در رم که سریعتر است ذخیره کنم.(به توضیحاتی که در اولین پست دادم توجه کنید).

CodeMasterX
چهارشنبه 26 اردیبهشت 1386, 23:19 عصر
نیما جان همونجور که گفتم اگر نخوایی توی هارد ذخیرشون کنی،میتونی مقدار فیلد رو مستقیما به PictureBox ست کنی.البته اگر درست یادم باشه مطمئن نیستم.
یا روش دیگه اینه که چون حجم فایل ها کم هستن،آدرس فایل عکس یا آیکونی که در PicBox هست رو بگیری و اطلاعات بانریش رو تو یه متغیر بایت بریزی و بعد ذخیرش کنی تو بانک داده.

mehraeen
دوشنبه 13 اسفند 1386, 09:19 صبح
می بخشید ولی آیا ذخیره کردن تصاویر در حافظه رم معنا دارد؟
این برای بانک محدودی از تصاویر آن هم به قول شما آیکون آن هم شاید مناسب باشد
بهترین راه از نظر من اینستکه آدرس تصاویر ذخیره شود .
ولی آیا نباید آخر داده ها در هارد ذخیره شوند؟ مگر اینکه بانک داده های تصاویر نباشد و شما بخواهید تنها در هنگام اجرای برنامه با هر تصویری که شد کار کنید.