NET Programming.

چگونگی ذخیره کردن عکس در پایگاه داده Sql Server

در این مقاله درباره نحوه ذخیره کردن عکس در پایگاه داده Sql Server صحبت می کنیم.

برای ذخیره کردن عکس در فیلدی از جداول پایگاه داده خود در Sql Server باید نوع فیلد را Image انتخاب کرد البته برای پایگاه داده اکسس باید نوع فیلد داده را OLE Object انتخاب کرد.

فرض می کنم جدولی با نام Student به صورت زیر در پایگاه داده ای با نام School داریم:

create table Student(stcode int primary key identity(1,1),stimage image)


برای ذخیره سازی عکس باید آنرا به صورت مجموعه ای از بایتها ذخیره کرد برای این کار در NET. کلاسی با نام فایل داریم که در این کلاس متدی به نام ReadAllBytes وجود دارد این متد آدرس عکس در کامپیوتر را گرفته و آنرا به صورت مجموعه ای از بایتها می خواند .

برای راحتی کار تابعی به نام ConvertImageToByte را به صورت زیر تعریف می کنیم:

C#.NET
private byte[] ConvertImageToByte(string ImageLocation)
{
   byte[] picture = File.ReadAllBytes(ImageLocation);
   return picture;
}


VB.NET
Private Function ConvertImageToByte(ByVal ImageLocation As String) As Byte()
   Dim picture As Byte() = File.ReadAllBytes(ImageLocation)
   Return picture
End Function


این تابع آدرس عکس موجود در کامپیوتر را گرفته و آنرا به صورت مجموعه ای از بایتها خوانده و در متغیری به نام picture که به صورت آرایه ای از بایت تعریف شده ذخیره می کند.

بقیه کار نوشتن دستور Insert برای درج کردن رکوردی در پایگاه داده :
)فرض می کنم عکس با نام test.png در کنار فایل exe برنامه دارم)

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 = "Insert into Student(stimage) values (@stimage)";
com.Parameters.AddWithValue("@stimage", ConvertImageToByte(Application.StartupPath + @"\test.png"));
com.ExecuteNonQuery();
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 = "Insert Into Student (stimage) values(@stimage)"
com.Parameters.AddWithValue("@stimage", ConvertImageToByte(Application.StartupPath + "\test.png"))
com.ExecuteNonQuery()
con.Close()


دستورات بالا را در رویداد کلیک button خود بنویسید.

حالا اگر به دیتابیس خود بروید و جدول خود را باز کنید می بینید در قسمت فیلد مربوط به عکس عبارت <Binary data> نوشته شده است اما اگر می خواهید کدهای عددی را ببنید در یک New Query دستور زیر را اجرا کنید:

select * from Student


نکته 1 : از نوع داده ای image فقط برای ذخیره سازی عکس استفاده نمی شود و می توان از این نوع برای ذخیره سازی فیلم و موسیقی و هرچیز دیگر استفاده کرد.

نکته 2 : به جای نوع داده image می توان از نوع (varbinary(max استفاده کرد که نحوه نوشتن دستورات آن هیچ تفاوتی ندارد که توصیه می شود ازاین نوع داده استفاده کنید.



دیدگاه شما :

نام             

ایمیل         

وب سایت  

پیام
                  

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '207.158.5.107' (10060) in C:\HostingSpaces\mobtaker\mobtakercode.com\wwwroot\2008.php on line 298
نمی تواند به سرویس دهنده متصل شودCan't connect to MySQL server on '207.158.5.107' (10060)