PDA

View Full Version : سوال: ذخیره عکس PictureBox در بانک و لود آن



pourang_us
دوشنبه 30 آذر 1388, 12:53 عصر
من میخوام یک عکسی رو که در Picture Box هست رو داخل بانک Sql ذخیره و بعد هم بتونم اون رو بازیابی کنم و دوباره داخل Picture box ذخیره کنم
توی سایت مطلب در این مورد زیاد هست اما هیچ کدوم کامل نیست یه جورهایی
روشی رو هم که خودم دارم error میده و به نتیجه ای نرسیده
ضمنا من فیلد بانکم رو هم Image انتخاب کردم


ممنون از توجهتون

saeedr22
دوشنبه 30 آذر 1388, 13:50 عصر
سلام.
شما می تونین از 3 تا روش واسه ذخیره کردن عکس استفاده کنین.
روش اول که درواقع نمیشه گفت ذخیره کردن عکس که در این روش مسیر فیزیکی عکس در یک فیلد ذخیره میشه و موقع خوندن مسیر رو از دیتا بیس میخونه .
روش دوم این هستش که از فیلد باینری استفاده کنیم و درواقع ما یک عکس رو به صورت یک فایل بخونیم و اطلاعاتشو درون یک فیلد باینری ذخیره کنیم.
که (این روش بهترین روش نیز می باشد)

روش دیگه هم که خودتون گفتین و از یک فیلد image استفاده میشه که تو این روش oracle بهتر جواب میده و اگه حجم فایل تو Sql server بالا بره سرعت پایین میاد.

pourang_us
دوشنبه 30 آذر 1388, 14:08 عصر
دوست عزیز

روش اول رو بنا به دلایلی برای این قسمت نمیخوام ازش استفاده کنم

در مورد روش دوم و سوم هم اطلاعاتم خیلی ناقص هست برای همین هم مشکلم رو اینجا مطرح کردم نحوه پیاده سازی این مطلب برام مهمه


با سپاس

karim orooji
دوشنبه 30 آذر 1388, 14:19 عصر
با سلام
من نوع oledb شو دارم هر كار كردم sql روي سيستم نصب نميشد
مجبور شدم oledb درست كنم
خواستي بگو برات بزام تبديلش كن به sql كاري نداره
روش كارش هم اينه كه عكس رو در پوش اي در در برنامه تعريف شده كپي ميشه و مسير رو برات در بانك ذخيره ميكنه براي لود هم فقط مسير رو بدي برات راحت مياره
موفق باشي

pourang_us
دوشنبه 30 آذر 1388, 14:54 عصر
نه دوست عزیز من نمیخواهم مسیر عکس رو در بانک داشته باشم من میخواهم خود عکس رو داخل بانک ذخیره بکنم

با سپاس

علیرضا حسن زاده
دوشنبه 30 آذر 1388, 15:48 عصر
من میخوام یک عکسی رو که در Picture Box هست رو داخل بانک Sql ذخیره و بعد هم بتونم اون رو بازیابی کنم و دوباره داخل Picture box ذخیره کنم
توی سایت مطلب در این مورد زیاد هست اما هیچ کدوم کامل نیست یه جورهایی
روشی رو هم که خودم دارم error میده و به نتیجه ای نرسیده
ضمنا من فیلد بانکم رو هم Image انتخاب کردم


ممنون از توجهتون

اگه خطای برنامه تواینسرت و اپ دیت کردن و سلکت باشه می تونی و باید عکس یا هر فیل دگه رو به صورت پارامتر به دستور بدی و تو دریافت اونهم مشکلی نیست اون رو بصورت ابجکت بگیر و بههر فرمتی که می خوای تبدیل کن چون تو دات نت مه کلاسا از ابجکت مشتق شدن و تبدیلش مشکلی نداره بازم سوالی داشتی بیشتر توضیح بدم:لبخند:

karim orooji
سه شنبه 01 دی 1388, 10:37 صبح
براي ذخيره عكس اونو بايد به صورت باينري بيت به بيت دربانك ذخبره كني
يك مثال تحت asp دارم ميخوام برات بزارمش بانكش هم sql
هم ذخيره در بانك و هم لود كردن عكس در بانك

aminvb
سه شنبه 01 دی 1388, 13:47 عصر
سلام.
شما می تونین از 3 تا روش واسه ذخیره کردن عکس استفاده کنین.
روش اول که درواقع نمیشه گفت ذخیره کردن عکس که در این روش مسیر فیزیکی عکس در یک فیلد ذخیره میشه و موقع خوندن مسیر رو از دیتا بیس میخونه .
روش دوم این هستش که از فیلد باینری استفاده کنیم و درواقع ما یک عکس رو به صورت یک فایل بخونیم و اطلاعاتشو درون یک فیلد باینری ذخیره کنیم.
که (این روش بهترین روش نیز می باشد)

روش دیگه هم که خودتون گفتین و از یک فیلد image استفاده میشه که تو این روش oracle بهتر جواب میده و اگه حجم فایل تو Sql server بالا بره سرعت پایین میاد.


میشه برنامه روش دوم رو بنویسی توو سایت آپ کنی ؟

ممنون

pourang_us
چهارشنبه 02 دی 1388, 16:13 عصر
باز هم درود

من

Dim Ms AsNew IO.MemoryStream()
PBoxPersonnel.Image.Save(Ms, PBoxPersonnel.Image.RawFormat)
Dim arrImage AsByte() = Ms.GetBuffer()
Ms.Close()


رو اینطوری نوشتم
اما زمانی که داخل دستور Inset Into میذارم به من پیغام
Error 1 Operator '&' is not defined for types 'String' and '1-dimensional array of Byte'.

رو میده
فکر میکنید اشکال کار کجاست

pourang_us
دوشنبه 07 دی 1388, 09:38 صبح
دوستان
باز هم درود بر شما
خودم بالاخره به نتایجی رسیدم که برای استفاده سایر دوستان اون رو اینجا قرار میدم


Try
Dim Ms AsNew System.IO.MemoryStream
PictureBox1.Image.Save(Ms, PictureBox1.Image.RawFormat)
Dim arrImage() AsByte = Ms.GetBuffer
Ms.Close()
Str = "Insert Into tst_Pic (tst_Id,Pic) values (@tst_Id,@Pic)"
Dim Cm AsNew SqlClient.SqlCommand(Str, Con)
With Cm
.Parameters.Add(New SqlClient.SqlParameter("@tst_Id", SqlDbType.Int)).Value = 4
.Parameters.Add(New SqlClient.SqlParameter("@Pic", SqlDbType.Image)).Value = arrImage
EndWith
Con.Open()
Cm.ExecuteNonQuery()
Con.Close()
MsgBox(" ")
Catch ex As Exception
MsgBox(ex.Message)
EndTry

البته فیلد Pic دیتا بیس از نوع Image هست

امیدوارم که مفید واقع شده باشه