PDA

View Full Version : سوال: ارسال تصوير از picturebox به sql server 2005 با vb.net



asgar_shahrzad
جمعه 15 مرداد 1389, 10:00 صبح
آيا كسي در اين مورد اطلاعاتي دارد؟ ممنون ميشم راهنمايي ام كنيد.....
:قلب::قلب::بوس::خجالت:

saeid.memfis
جمعه 15 مرداد 1389, 12:12 عصر
سلام دوست عزیز
عکس رو میشه در پایگاه داده ذخیره کرد .ولی من پیشنهاد می کنم این کارو نکنید..بعد از چند درج عکس سرعت خیلی پایین میاد
نظر من اینه که یک فلدر مشخص رو برای عکس ها در نظر بگیرید و عکس ها رو اونجا نگهداری کنید و فقط آدرسشو تو بانک ذخیره کنید
موفق باشید

nasim bahari
جمعه 15 مرداد 1389, 15:31 عصر
سلام..........

من هم با نظر دوستمون برای ذخیره آدرس عکس ها بجای خود عکس ها موافقم.....شما با انتخاب یک سیاست امنیتی درست می تونین از اونها استفاده کنین.....

البته من یه مثال واسه ذخیره عکس توی دیتابیس دارم....ولی VS نصب ندارم....سعی می کنم هر چه زودتر برات این مثال رو بزارم.....

موفق باشین

ali_najari
جمعه 15 مرداد 1389, 22:08 عصر
اول در بالای کلاس این هارو Import کن



Imports System.Data
Imports System.Data.SqlClient
Imports MS = Microsoft.SqlServer.Management.Smo


بعد برای ذخیره عکس از این کد استفاده کن




Dim ObjCon As New SqlConnection
Dim ObjCom As New SqlCommand

Dim ms As New IO.MemoryStream
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
Dim ArryPic As Byte() = ms.GetBuffer
ms.Close()
Dim cs As String = "Data Source=.\SQLEXPRESS;Initial Catalog=DB;User ID=Sa;Password=123"
ObjCon.ConnectionString = cs
ObjCon.Open()
ObjCom = New SqlCommand
ObjCom.Connection = ObjCon
ObjCom.CommandText = "Insert Into TBL(Pic) Values(@Picture)"
ObjCom.Parameters.Add(New SqlParameter("@picture", SqlDbType.Image)).Value = ArryPic
ObjCom.ExecuteNonQuery()
ObjCon.Close()
MsgBox("Done")



برای خواند عکس از DataBase از کد زیر استفاده کن



Dim ObjCon As New SqlConnection
Dim ObjCom As New SqlCommand
Private da As New SqlDataAdapter
Public dt As New DataTable

Dim cs As String = "Data Source=.\SQLEXPRESS;Initial Catalog=DB;User ID=Sa;Password=123"
ObjCon.ConnectionString = cs
ObjCon.Open()

dt.Reset()
ObjCom.Connection = ObjCon
ObjCom.CommandText = "Select Pic From TBL where ID=2"
da.SelectCommand = ObjCom
dt = New DataTable
da.Fill(dt)

ObjCon.Close()

Dim ArryPic As Byte() = dt.Rows(0).Item(0)
Dim Ms As New IO.MemoryStream(ArryPic)
PictureBox1.Image = Image.FromStream(Ms)
Ms.Close()

Shahram_Shobeiri
شنبه 16 مرداد 1389, 11:26 صبح
اگه الزام داری که از sql server 2005 استفاده کنی باید بگم همونطور که دوستان گفتند ذخیره عکس در دیتا بیس باعث کاهش کارایی سرور میشه اما اگه می تونی به 2008 سوئیچ کنی با استفاده از روش filestream می تونی عکس ها یا هر فایل دیگه ای با حجم بالا رو در دیتا بیس ذخیره کنی، بدون اینکه بار زیادی بر سرور اعمال بشه

nasim bahari
شنبه 16 مرداد 1389, 14:58 عصر
اگه الزام داری که از sql server 2005 استفاده کنی باید بگم همونطور که دوستان گفتند ذخیره عکس در دیتا بیس باعث کاهش کارایی سرور میشه اما اگه می تونی به 2008 سوئیچ کنی با استفاده از روش filestream می تونی عکس ها یا هر فایل دیگه ای با حجم بالا رو در دیتا بیس ذخیره کنی، بدون اینکه بار زیادی بر سرور اعمال بشه

میشه در مورد این تکنیک بیشتر توضیح بدین......

manx625
یک شنبه 17 مرداد 1389, 07:04 صبح
عالي بود.بسيار بهره مند شدم.

tizboy2010
شنبه 10 دی 1390, 10:40 صبح
ممنون! بسیار عالی بود!