NET Programming.
در مقاله قبلی درباره چگونگی ذخیره کردن عکس در دیتابیس Sql Server به آدرس زیر مطالبی را بیان کردم:
چگونگی ذخیره کردن عکس در پایگاه داده Sql Server
اما حالا می خواهم درباره چگونگی خواندن عکس از دیتابیس و نمایش آن در یک picture box صحبت کنم.
در ابتدا مفروضات مسئله :
فرض می کنم در پایگاه داده Sql Server دیتابیسی با نام School و جدولی به نام Student دارم که فیلد primary key این جدول با نام stcode و فیلدی که تصویر دانش اموز را نگه داری می کند از نوع image و با نام stimage است و در این جدول دانش آموزی با کد 1 اطلاعات آن وارد شده است.
در ابتدا تابعی به صورت زیر تعریف می کنم :
| C#.NET |
|
private Image ConvertByteToImage(byte[] ImageByte) { MemoryStream ms = new MemoryStream(ImageByte); Image img; img = Image.FromStream(ms); return img; } |
| VB.NET |
|
Private Function ConvertByteToImage(ByVal ImageByte
As Byte()) As Image Dim ms As New MemoryStream(ImageByte) Dim img As Image img = Image.FromStream(ms) Return img End Function |
این تابع کدهای باینری مربوط به عکس ذخیره شده را گرفته و با استفاده از کلاس MemoryStream آنرا به صورت بافر در می آورد و با استفاده از متد FromStream از کلاس Image بافر را به تصویر تبدیل می کنیم.
و حالا خواندن عکس از دیتابیس :
| C#.NET |
|
SqlConnection con =
new SqlConnection(); con.ConnectionString = "Data Source=.;Initial Catalog=School;;Integrated Security=true"; con.Open(); SqlCommand com = new SqlCommand(); com.Connection = con; com.CommandText = "Select stimage from Student1 where stcode='1'"; SqlDataReader reader = com.ExecuteReader(); reader.Read(); pic1.Image = ConvertByteToImage((byte[])reader.GetValue(0)); con.Close(); |
| VB.NET |
|
Dim con
As New SqlConnection con.ConnectionString = "Data Source=.;Initial Catalog=School;Integrated Security=true" con.Open() Dim com As New SqlCommand com.Connection = con com.CommandText = "Select stimage from Student where stcode='1'" Dim reader As SqlDataReader = com.ExecuteReader reader.Read() pic1.Image = ConvertByteToImage(reader.GetValue(0)) con.Close() |
pic1 نام کنترل pictureBox برای نمایش تصویر است.
دستورات بالا را در رویداد کلیک یک button بنویسید.
نکته : قبل از نوشتن دستورات بالا فضای نامی System.IO ، System.Data.Sql و System.Data.SqlClient را به پروژه خود اضافه کنید.