PDA

View Full Version : سوال: نحوه ذخیره تصویر در دیتابیس Sql server 2008



behrooz69
دوشنبه 25 آذر 1392, 23:07 عصر
سلام دوستان . من تو برنامم می خوام علاوه بر اطلاعات عکس هم تو دیتابیس من که با Sql server 2008 درستش کردم ثبت بشه . که بعدا بتونم تو گریدویو نشونش بدم و بشه تو Picturebox هم نشونش داد با دستور Select .
کمکم کنید . دستتون درد نکنه . اگه سورس دارید سورس بدید بهتره اگه نه همون کد رو راضی ام .:بامزه::بوس::لبخند::تشویق:

sagggad
دوشنبه 25 آذر 1392, 23:13 عصر
داداش ببین بدردت میخوره؟؟

براي ذخيره عكس بايد از يكي از نوع هاي باينري مثل image,binary,varbinary استفاده كنيد.
مثلا من يه جدول با يه فيلد از نوع image( البته microsoft ميگه ديگه از اين استفاده نكنيد چون قراره توي نسخه هاي بعدي حذفش كنم. بجاش ميتونيد از varbinary استفاده كنيد.) درست كردم. حالا مثلا با كد زير يه عكس ميندازم توش:
("Dim cnn As New SqlClient.SqlConnection("Data Source=.;Initial Catalog=picdbt;Integrated Security=True
(Dim c As New SqlClient.SqlCommand("insert into table1(id,pic) values(1,@v1)", cnn
Dim o As New IO.MemoryStream
(Image.FromFile("F:\SMIL\a\confused.gif").Save(o, Imaging.ImageFormat.Gif
((()c.Parameters.Add(New SqlClient.SqlParameter("v1", o.ToArray
()cnn.Open
()c.ExecuteNonQuery
()cnn.Close

sagggad
دوشنبه 25 آذر 1392, 23:21 عصر
داداش یه سری هم به آدرس زیر بزن احتمالا کارت راه بیوفته:
http://www.fekrenaw.com/TopicDetails.aspx?tid=21

behrooz69
سه شنبه 26 آذر 1392, 01:28 صبح
دوستان این کد منه همه جاش درسته جز قسمت آخر که مبروط به ذخیره عکسه لفطا چک کنید و کمکم کنید دوستان گیرم . مرسی

'///// insert query /////
con = New SqlConnection(My.Settings.conn)
cmd = New SqlCommand()
cmd.Connection = con
cmd.CommandText = "INSERT INTO PhotographDB (CodePic,Fname,Lname,CodeMeli,Tell,TedadJabe,Tarik hTahvil,TahvilGiri,Pic) VALUES (@CodePic,@Fname,@Lname,@CodeMeli,@Tell,@TarikhTah vil,@TahvilGiri,@Pic) "
cmd.Parameters.Add("@CodePic", SqlDbType.NVarChar, 50).Value = TxtCodePicInReg.Text
cmd.Parameters.Add("@Fname", SqlDbType.NVarChar, 50).Value = TxtName.Text
cmd.Parameters.Add("@Lname", SqlDbType.NVarChar, 100).Value = TxtLastName.Text
cmd.Parameters.Add("@CodeMeli", SqlDbType.NVarChar, 50).Value = TxtCodeMeliInReg.Text
cmd.Parameters.Add("@Tell", SqlDbType.NVarChar, 50).Value = TxtMob.Text
cmd.Parameters.Add("@TarikhTahvil", SqlDbType.NVarChar, 50).Value = HM_FarsiCalendar1.Text
cmd.Parameters.Add("@TahvilGiri", SqlDbType.NVarChar, 50).Value = CboTahvilGiri.Text

Image.FromFile("G:\projeeeeeeeeeeeee\Axasi\doc\MainLogo.jpg").Save(o, Imaging.ImageFormat.Jpeg)
cmd.Parameters.Add(New SqlClient.SqlParameter("pic", o.ToArray()))

con.Open()
If con.State = ConnectionState.Open Then
If cmd.ExecuteNonQuery() Then
con.Close()
MessageBox.Show(" اطلاعات مورد نظر ثبت شد")
End If
End If
cmd.Dispose()
con.Dispose()

boveiryghasem
سه شنبه 26 آذر 1392, 08:22 صبح
سلام این مطالب رو بخون شاید دید بهتری بهت بده:

ذخیره سازی و بازگردانی تصاویر در پایگاه داده SQL Server



ذخیره سازی و بازگردانی تصاویر در پایگاه داده SQL Server. در این مقاله در مورد نحوه استفاده از داده هایی از نوع تصویر در پایگاه داده و انجام عملیات ذخیره سازی و بازگردانی روی آنها در SQL Server گفتگو خواهد شد. برای آشنایی با نحوه ذخیره سازی تصاویر در SQL Server در ادامه مطلب با ما همراه باشید.
مقدمه
در SQL Server علاوه بر ذخیره سازی داده هایی از نوع متن، اعداد و سایر بیت ها، می توان داده های باینری (تصاویر) را نیز ذخیره سازی کرد. این مقاله در مورد ذخیره سازی تصاویر با زبان برنامه نویسی ویژوال بیسیک در پایگاه داده SQL Server صحبت می کند.
پیش نیازها
آشنایی با روش ذخیره سازی در SQL Server
آشنایی با پروژه های Windows Application در ویژوال بیسیک دات نت
آشنایی با ADO.Net
مراحل انجام کار:
مرحله ۱: ایجاد جدول SampleImageTable:
در این مرحله یک جدول SampleImageTable با فیلد sampleimage و از نوع داده image ایجاد کنید. مانند نمونه کد زیر:
create table SampleImageTable (sampleimage image)مرحله ۲: ایجاد روش ذخیره سازی:
روش ذخیره سازی UploadImage برای ذخیره کردن تصاویر استفاده می شود. برای ایجاد این روش از کدهای زیر استفاده کنید:
create procedure UploadImage(@imgsamgetimage as image) as insert into SampleImageTable (sampleimage) values (@imgsamgetimage)مرحله ۳: ایجاد یک پروژه VB.net:


ایجاد پروژه Windows Form با نام ImageDemo
افزودن یک کنترل txtImg به فرم
افزودن یک کنترل OpenFileDialog
افزودن ۳ کنترل Button به فرم با نام های btnseltfile، btnUpload و btnDownload
افزودن یه کنترل PictureBox

مرحله ۴: نوشتن کدهای ذخیره سازی و بازگردانی فایل:
کدهای زیر را در رویداد Click کنترل btnseltfile قرار دهید:
Private Sub btnseltfile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnseltfile.Click OpenFileDialog1.ShowDialog() txtImg.Text = OpenFileDialog1.FileName End Subکدهای بالا برای نمایش پنجره OpenFileDialog و دریافت نام تصویر که برای عمل آپلود از آن استفاده می شود، می باشند.

کدهای زیر را در رویداد کلیک دکمه btnUpload قرار دهید:
Private Sub btnUpload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpload.Click Try If Trim(txtImg.Text) = "" Then MsgBox("Please select a image.") Exit Sub End If Dim fs As New FileStream(Trim(txtImg.Text), FileMode.Open) Dim Data() As Byte = New [Byte](fs.Length) {} fs.Read(Data, 0, fs.Length) Dim con As New System.Data.SqlClient.SqlConnection("data source=mt5;initial catalog=master; user id=sa;password=mms") con.Open() Dim cmd As New System.Data.SqlClient.SqlCommand("UploadImage") cmd.Connection = con cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@imgsamgetimage", Data) cmd.ExecuteNonQuery() con.Close() fs.Close() Catch ex As System.Data.SqlClient.SqlException MsgBox(ex.Message) End Try End Subکدهای بالا برای بدست آوردن محتوای فایل و در یک آرایه بیتی و ذخیره تصویر در پایگاه داده (http://blogfa.com/Desktop/Default.aspx?r=2476373) مورد استفاده قرار می گیرند.

کدهای زیر را در رویداد کلیک دکمه btndownload قرار دهید:
Private Sub btnDownload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDownload.Click Dim con As New System.Data.SqlClient.SqlConnection("data source=mt5;initial catalog=master; user id=sa;password=mms") con.Open() Dim cmd As New System.Data.SqlClient.SqlCommand("select * from SampleImageTable") cmd.Connection = con cmd.CommandType = CommandType.Text Dim da As New System.Data.SqlClient.SqlDataAdapter(cmd) Dim ds As New DataSet() da.Fill(ds) Dim bits As Byte() = CType(ds.Tables(0).Rows(0).Item(0), Byte()) Dim memorybits As New MemoryStream(bits) Dim bitmap As New Bitmap(memorybits) PictureBox1.Image = bitmap End Subکدهای بالا برای خواندن محتوای فیلد image و تبدیل آن به یک تصویر از نوع Bitmap و نمایش آن در جعبه متن مورد استفاده قرار می گیرند.

vb341
سه شنبه 26 آذر 1392, 14:35 عصر
If Me.PictureBox1.Image IsNot Nothing Then
Dim ms As New MemoryStream
Me.PictureBox1.Image.Save(ms, Me.PictureBox1.Image.RawFormat)
Dim ArrPic() As Byte = ms.GetBuffer
ms.Close()
Cmd.Parameters.Add("@PersonelPic", SqlDbType.VarBinary).Value = ArrPic
Else
'.Parameters.Add(New SqlParameter("@signature", SqlDbType.Image)).Value = System.DBNull.Value
Cmd.Parameters.Add(New SqlParameter("@PersonelPic", SqlDbType.VarBinary)).Value = System.DBNull.Value
End If

vb341
سه شنبه 26 آذر 1392, 14:38 عصر
البته قبل از کد بالا نیاز به دستور زیر نیز هست :

Imports System.IO

behrooz69
چهارشنبه 27 آذر 1392, 19:06 عصر
با تشکر از هر 3 تاتون مشکلم حل شد . ولی یه مشکل بزرگ هست بچه ها . من 3 تا عکس تو دیتابیسم ذخیره کردم و 4 تا متن. حالا دیتابیسم شده 12 مگابایت . این یعنی اگه برنامه تو عکاسی استفاده شه و 30000 تا عکس بهش اضافه شه فکر نمی کنین که حجم دیتابیس خیلی زیاد شه ؟

Ali_Fallah
چهارشنبه 27 آذر 1392, 20:12 عصر
با سلام
بهتر نیست برنامه شما بجای ذخیره عکس در پایگاه داده فقط مسیر اون رو بخونه ونشونش بده؟

behrooz69
چهارشنبه 27 آذر 1392, 23:54 عصر
نه ذخیره عکس واسه اینه که هم از عکساش بک آپ داشته باشه هم بتونه کنترل داشته باشه رو عکساش و جستجوش هم بتونه رو سیستم دیگه اجراش کنه

farhad85
پنج شنبه 28 آذر 1392, 00:15 صبح
:تشویق::ناراحت::لبخند::اشتبا ::چشمک::متفکر::بوس::کف::خجالت: :گیج:

behnaz kimia
پنج شنبه 28 آذر 1392, 00:17 صبح
با تشکر از هر 3 تاتون مشکلم حل شد .

سلام.لطفا یک توضیح مفید بدین که چی شد منم همین مشکل رو دارم!سپاس :لبخندساده:

behrooz69
جمعه 29 آذر 1392, 22:17 عصر
چشم سورسش با توضیحاتشو در کوتاهتریم زمان ممکن میزارم .

behrooz69
دوشنبه 02 دی 1392, 11:23 صبح
تونسم مشکلم رو رفع کنم . برنامشو نوشتم تو این پست گذاشتم برید ببینید :
http://barnamenevis.org/showthread.php?433209-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-Sql-%D9%88-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%B9%DA%A9%D8%B3-%D9%87%D8%A7&p=1937184#post1937184