در این مطلب آموزشی از نواندیشان نحوه ذخیره سازی یک تصویر در بانک اطلاعاتی سرور SQL با زبان برنامهنویسی ASP.Net آموزش داده شده است.
بسیاری از کاربردهای وب برای استفاده، تعدادی از تصاویر را درون خود دارند. این تصاویر معمولاً در یک فولدر سرور وب ذخیره شدهاند و از طریق مسیر مرتبط با توجه به فولدر ریشه وب سایت قابل دسترسی هستند. .NET در حال حاضر پلتفرمی را برای کاربردهای گسترده شده ارائه کرده است. از ASP.NET میتوان برای ذخیره کردن در یک بانک اطلاعاتی همانند SQL سرور 2000 و نسخههای بعد از آن استفاده کرد. برای این منظور بانک اطلاعاتی سرور SQL گونهایی اطلاعات را تحت عنوان تصویر تعریف کرده است که برای ذخیره کردن تصاویر در بانک اطلاعاتی بکار میروند.
ذخیره تصویر در بانک اطلاعاتی
برای دسترسی به این تصاویر ذخیره شده در بانک اطلاعاتی ما از کلاسهای ADO.NET استفاده میکنیم. برای پیدا کردن اینکه چگونه یک تصویر را در بانک اطلاعاتی سرور SQL ذخیره و آن را بازیابی کنیم، میتوانید یک صفحه .aspx را ایجاد نمایید که شامل یک فایل کنترل ورودی HTML میباشد که برای انتخاب فایل تصویری که قرار است در بانک اطلاعاتی ذخیره شود مورد استفاده قرار میگیرد. همچنین میتوانید یک TEXTBOX کنترلی را ایجاد نمایید که از طریق آن میتوانید نام تصویر یا تعدادی توضیح یا یک ID تصویر برای تصویر ذخیره شده، ایجاد کنید.از یک دکمه کنترل برای آپلود تصویر به بانک اطلاعاتی استفاده میشود. در این رابطه از فضاهای نامی همانند System.Data.SqlClient, System.Drawing, System.Data, System.IO, and System.Drawing.Imaging استفاده شده است.
با استفاده از ویژگی دکمه onclick شما میتوانید کد زیر را برای اپلود یک تصویر به بانک اطلاعاتی استفاده کنید:
// create a byte[] for the image file that is uploaded
int imagelen = Upload.PostedFile.ContentLength;
byte[] picbyte = new byte[imagelen];
Upload.PostedFile.InputStream.Read (picbyte, 0, imagelen);
// Insert the image and image id into the database
SqlConnection conn = new SqlConnection (@"give the connection string here...");
try
{
conn.Open ();
SqlCommand cmd = new SqlCommand ("insert into ImageTable "
+ "(ImageField, ImageID) values (@pic, @imageid)", conn);
cmd.Parameters.Add ("@pic", picbyte);
cmd.Parameters.Add ("@imageid", lblImageID.Text);
cmd.ExecuteNonQuery ();
}
finally
{
conn.Close ();
}
همچنین میتوانید کد بالا را به صورت یک تابع نوشته و آن تابع را با رویداد onclick از دکمه آپلود احظار کنید. کد نشان داده شده در بالا، مراحل زیر را برای وارد کردن یک تصویر به بانک اطلاعاتی انجام میدهد:
1. مشخص کردن طول مضمون تصویری که قرار است آپلود شود.
2. ایجاد یک بایت [] برای ذخیره تصویر
3. خواندن مسیر ورودی فایل پست شده
4. ایجاد یک موضوع ارتباطی
5. باز کردن موضوع ارتباطی
6. ایجاد یک موضوع فرمان
7. اضافه کردن پارامترهایی به موضوع فرمان
8. اجرای فرمان SQL با استفاده از روش اجرای غیر پرسشی موضوع فرمان
9. بستن موضوع ارتباطی
مراحل بازیابی تصویر از بانک اطلاعاتی
1. یک MemoryStream را یجاد کنید. که میتواند چیزی شبیه به زیر باشد:
MemoryStream mstream = new MemoryStream ();
2. یک موضوع ارتباطی را ایجاد کنید.
3. ارتباط را به بانک اطلاعاتی باز کنید.
4. برای اجرای فرمان مربوط به بازیابی تصویر، یک فرمان را ایجاد کنید.
5. برای بازیابی تصویر از روش اجرای فرمانی SCALAR استفاده کنید.
6. خروجی مربوط به روش اجرایی اسکالر را برای آن بایت [] مشخص کنید.
byte[] image = (byte[]) command.ExecuteScalar ();
7. مسیر را بنویسید.
8. برای نگهداری مسیر یک موضوع bitmap را ایجاد کنید.
Bitmap bitmap = new Bitmap (stream);
9. نوع محتویات “image/gif” را تنظیم کنید.
Response.ContentType = "image/gif";
10. از روش ذخیرهسازی bitmap برای خروجی تصویری که به مسیر خروجی مربوط است استفاده کنید.
bitmap.Save (Response.OutputStream, ImageFormat.Gif);
11. ارتباط را ببندید.
12. مسیر را ببندید.
mstream.Close();
با استفاده از مراحل بالا شما میتوانید تصویر را از بانک اطلاعاتی صفحه وب بازیابی کرده و آن را مشاهد کنید. شما میتوانید از این الگوریتمها و مزایای مربوط به اطلاعات تیپ تصویر موجود در بانک اطلاعاتی SQL سرور 2000 برای نگهداری تصاویر کوچکی که مرتبط به یک ثبت خاص در جدول بانک اطلاعاتی هستند، استفاده کنید. این روش ذخیرهسازی مانع از اجرای کار زمانبر و کند پیگیری مسیر فولدر وب، در صورتی که تصاویر در یک فولدر وب ذخیره شده باشند، میشود.
آموزش تصویری SQL Server 2012 به زبان فارسی را همراه با نرمافزار SQL Server 2012 از لینک زیر میتوانید تهیه نمایید: