ايران ويج

نسخه‌ی کامل: دخیره عکس در Sql و بازخوانی آن
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام به اساتید محترم
من یک پروژه را دارم انجام میدم که در یکی از قسمتهای برنامه تعداد حدود 40 تا مقادیر ورودی بصورت text دارم و یک عکس . خوب ذخیره تکس راحته ولی تاحالا تصویر ذخیره نکردم.
از اینترنت کدهایی را گرفته ام برای نبدیل عکس ب باینری و کم کردن حجم عکس. اما هر روشی را امتحان می کنم ایراد می گیره. لطفا کمکم کنید.
اینم کدی که استفاده می کنم:

کد php:
'''''''''tabdile ax az jpeg be byte''''''''''''
        Dim strmemory As New MemoryStream
        picbox_oa.Image.Save(strmemory, Imaging.ImageFormat.Jpeg)
        Dim buffer(CInt(strmemory.Length - 1)) As Byte
        strmemory.Position = 0
        strmemory.Read(buffer, 0, CInt(strmemory.Length))
        
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        
Dim objcon_oa As New SqlClient.SqlConnection("data source=.;initial catalog=Anjoman;Integrated Security = true;")
        
Dim objcom_oa As New SqlClient.SqlCommand("insert into ozv(id,pics) values ('" txtid_oa.Text "',@v1)"objcon_oa)
        
objcom_oa.Parameters.Add(New SqlClient.SqlParameter("v1"buffer.ToArray()))
        
objcon_oa.Open()
        
objcom_oa.ExecuteNonQuery()
        
objcon_oa.Close()
        
MsgBox("اطلاعات جدید ثبت شد"MsgBoxStyle.Information"ثبت اطلاعات")
       
        
txtid_oa.Focus() 
سلام
بهترین روش اینه که ادرس عکس را ذخیره کنید!
اینکه کل عکس ذخیر بشه حجم بانک زیاد میشه و موقع واکشی افت سرعت خواهید داشت


موفق باشید
ممنونم که کمکم کردین. اما راستش برای جایی که این برنامه را می نویسم بهتره که تمام اطلاعات درون دیتابیس باشه تا متمرکز باشه و احتمال حذف و تغییر نام اتفاقی هم پیش نیاد.
راستش موفق شدم که عکس رو به همراه 42 تا اطلاعات دیگه ذخیره کنم. حالا موقع جستجو می خوام اطلاعات از دیتا گرید به تکس باکس ها انتقال داده بشن (این کار رو انجام دادم) که کاری نداره اما عکس رو نمی تونم به پیکچرباکس بفرستم !
البته وقتی اطلاعات رو توی دیتا گرید برای تست نشون دادم عکس هم نمایش داده شد اما تا عکس رو درون پیکچر باکس نشون ندم این کار بی فایده میشه
گیر افتادم لطفا کمکم کن
عجرت با قمربنی هاشم آقام ابوالفضل
(۲۲-آبان-۱۳۹۲, ۱۸:۵۸:۴۷)antionline نوشته است: [ -> ]ممنونم که کمکم کردین. اما راستش برای جایی که این برنامه را می نویسم بهتره که تمام اطلاعات درون دیتابیس باشه تا متمرکز باشه و احتمال حذف و تغییر نام اتفاقی هم پیش نیاد.
راستش موفق شدم که عکس رو به همراه 42 تا اطلاعات دیگه ذخیره کنم. حالا موقع جستجو می خوام اطلاعات از دیتا گرید به تکس باکس ها انتقال داده بشن (این کار رو انجام دادم) که کاری نداره اما عکس رو نمی تونم به پیکچرباکس بفرستم !
البته وقتی اطلاعات رو توی دیتا گرید برای تست نشون دادم عکس هم نمایش داده شد اما تا عکس رو درون پیکچر باکس نشون ندم این کار بی فایده میشه
گیر افتادم لطفا کمکم کن
عجرت با قمربنی هاشم آقام ابوالفضل

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

اینجارا ببین فکر کنم بتونه کمکت کنه

http://www.persiadevelopers.com/articles...abase.aspx
واقعا از لطفت ممنونم، همونطور که گفتم برای جایی برنامه می نویسم که بهتره امکان دستکاری نداشته باشن چون کار منو زیاد می کنن. بهشون اخطار دادم که حجمش میره بالا اما قبول کردن.
از دیشب مشغولم الان کلیه کارهایی که خواستم رو انجام دادم البته یه ذره سخت بود. بدون لطف شما که اصلا هیچ کاری نمی تونستم بکنم.
ازت ممنونم
(۲۴-آبان-۱۳۹۲, ۲۳:۱۳:۲۸)antionline نوشته است: [ -> ]واقعا از لطفت ممنونم، همونطور که گفتم برای جایی برنامه می نویسم که بهتره امکان دستکاری نداشته باشن چون کار منو زیاد می کنن. بهشون اخطار دادم که حجمش میره بالا اما قبول کردن.
از دیشب مشغولم الان کلیه کارهایی که خواستم رو انجام دادم البته یه ذره سخت بود. بدون لطف شما که اصلا هیچ کاری نمی تونستم بکنم.
ازت ممنونم

خواهش
وظیفه بود
حجم بره بالا برنامه شما افت سرعت پیدا میکنه!بازم پیشنهاد میکنم از این روش استفاده نکنید

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

این کد برای نمایش یک عکس در picture box
کد php:
Private Sub picbox_oa_Click(ByVal sender As ObjectByVal e As System.EventArgsHandles picbox_oa.Click
Try

            
Dim dlgOpen As New OpenFileDialog

            With dlgOpen

                
.fliter "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF"

                
.Title "انتخاب تصوير"

                
If .ShowDialog Windows.Forms.DialogResult.OK Then

                    Me
.picbox_oa.Image Image.FromFile(.FileName)

                
End If

            
End With

        
Catch ex As Exception

            MessageBox
.Show(ex.Message)

        
End Try 

حالا نوبت ارسال اطلاعات به همراه عکس به دیتا بیس است
کد php:
Private Sub btn_addoa_Click(ByVal sender As ObjectByVal e As System.EventArgs)
        
'''''''''tabdile ax az jpeg be byte''''''''''''
        Dim strmemory As New MemoryStream
        picbox_oa.Image.Save(strmemory, Imaging.ImageFormat.Jpeg)
        Dim buffer(CInt(strmemory.Length - 1)) As Byte
        strmemory.Position = 0
        strmemory.Read(buffer, 0, CInt(strmemory.Length))

        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      
Dim objcon_oa As New SqlClient.SqlConnection("data source=.;initial catalog=Anjoman;Integrated Security = true;")
        
Dim objcom_oa As New SqlClient.SqlCommand("insert into ozv(id,tarikh_ozviat,fname,lname,name_pedar,pics) values ('" txtid_oa.Text _
 
"','" txtdateozviat_oa.Text "',N'" txtname_oa.Text "',N'" txtfamily_oa.Text "',N'"  _
txtfather_oa.Text "',@ax)"objcon_oa)
        
objcom_oa.Parameters.Add("ax"SqlDbType.Binary).Value strmemory.GetBuffer
        
'objcom_oa.Parameters.Add(New SqlClient.SqlParameter("ax", buffer))
        objcon_oa.Open()
        objcom_oa.ExecuteNonQuery()
        objcon_oa.Close()
        MsgBox("اطلاعات جدید ثبت شد", MsgBoxStyle.Information, "ثبت اطلاعات")

        txtid_oa.Focus()
    End Sub 
حالا اطلاعات ما به درون دیتا بیس انتقال پیدا کرده. نوبت جستجو و ویرایش اطلاعات ثبت شده است، برای این کار باید اطلاعات بازخوانی بشود و مقادیر ثبت شده مجددا به تکس باکس ها برگردونده بشن به همراه عکس البته !
کد php:
Dim con As String "data source=.;initial catalog=Anjoman;Integrated Security = true;"
            
Dim objcon As New SqlConnection(con)
            
objcon.Open()
            
Dim c As String "select * from ozv where id='" txtid_oa.Text "'"
            
Dim d As New SqlCommand(cobjcon)

            
Dim da As New SqlDataAdapter(d)
            
Dim ds As New DataSet
            da
.Fill(ds"ozv")
            
objcon.Close()
            
Dim arrPic() As Byte CType(ds.Tables("ozv").Rows(0).Item("pics"), Byte())

            
Dim ms As New MemoryStream(arrPic)

            
Me.picbox_oa.Image Image.FromStream(ms)
            
txtdateozviat_oa.Text ds.Tables("ozv").Rows(0).Item("tarikh_ozviat").ToString
            txtname_oa
.Text ds.Tables("ozv").Rows(0).Item("fname").ToString
            txtfamily_oa
.Text ds.Tables("ozv").Rows(0).Item("lname").ToString
            txtfather_oa
.Text ds.Tables("ozv").Rows(0).Item("name_pedar").ToString
Catch ex As Exception

            MessageBox
.Show(ex.Message)

        
End Try 
ببخشید اگه زیاد شد. خواستم اگه کسی مثل من دنبالش گشت بتونم راهنماییش کنم
با تشکر فراوان از دوست خوبم Ghoghnus