سورس کد ذخیره و بازیابی تصویر از پایگاه داده SQL Server با استفاده از VB.NET


در دنیای برنامه‌نویسی، مدیریت تصاویر در برنامه‌های دسکتاپ و وبی اهمیت فراوانی دارد. یکی از روش‌های معمول برای نگهداری تصاویر، ذخیره آنها در پایگاه داده‌ها است. SQL Server، به عنوان یکی از قدرتمندترین سیستم‌های مدیریت پایگاه داده، امکانات زیادی برای ذخیره‌سازی انواع داده‌ها، از جمله تصاویر، فراهم کرده است. در این مقاله، به صورت کامل و جامع، نحوه نوشتن سورس کد در زبان VB.NET برای ذخیره و بازیابی تصاویر از پایگاه داده SQL Server را بررسی می‌کنیم.
  1. اهمیت ذخیره‌سازی تصاویر در پایگاه داده
    در بسیاری از برنامه‌ها، نیاز است که تصاویر کاربر، لوگوها، یا هر نوع تصویر دیگری در پایگاه داده نگهداری شوند. این کار مزایای زیادی دارد، از جمله حفظ یکپارچگی داده‌ها، امنیت، و امکان مدیریت آسان‌تر. با این حال، باید توجه داشت که ذخیره‌سازی تصاویر در پایگاه داده‌ها، ممکن است باعث افزایش حجم دیتابیس و کاهش کارایی شود، به همین دلیل، برخی توسعه‌دهندگان ترجیح می‌دهند تصاویر را در فایل‌های جداگانه نگهداری کرده و مسیر آن‌ها را در پایگاه داده ذخیره کنند. ولی در این مقاله، تمرکز بر روی ذخیره‌سازی مستقیم تصاویر در جدول‌های SQL Server است.
    2. طراحی جدول پایگاه داده
    قبل از شروع به نوشتن کد، باید یک جدول مناسب در پایگاه داده ایجاد کنیم. این جدول باید یک ستون نوع `VARBINARY(MAX)` داشته باشد، چون این نوع ستون برای نگهداری داده‌های باینری حجیم، مثل تصاویر، مناسب است. نمونه‌ای از ساختار جدول به شکل زیر است:
    sql  

CREATE TABLE Images (

ID INT IDENTITY(1,1) PRIMARY KEY,

Name NVARCHAR(100),

ImageData VARBINARY(MAX)

);


در این جدول، هر تصویر یک شناسه یکتا دارد، نام آن ذخیره می‌شود و داده‌های تصویر در ستون `ImageData` قرار می‌گیرد.
  1. نوشتن کد VB.NET برای ذخیره تصویر
    برای ذخیره‌سازی تصویر در پایگاه داده، باید تصویر مورد نظر را به صورت بایت آرایۀ (`byte array`) تبدیل کنیم. سپس، این آرایه را در ستون `VARBINARY(MAX)` قرار دهیم. در VB.NET، این کار معمولاً با استفاده از کلاس `FileStream` و `BinaryReader` انجام می‌شود.
    کد نمونه برای ذخیره تصویر به صورت زیر است:
    vb  

Imports System.Data.SqlClient

Imports System.IO
Public Sub SaveImage(ByVal imagePath As String, ByVal name As String)

Dim connString As String = "Data Source=SERVER_NAME;Initial Catalog=DATABASE_NAME;Integrated Security=True"

Using conn As New SqlConnection(connString)

Dim query As String = "INSERT INTO Images (Name, ImageData) VALUES (@Name, @ImageData)"

Using cmd As New SqlCommand(query, conn)

' خواندن تصویر از مسیر فایل

Dim imgBytes As Byte()

Using fs As New FileStream(imagePath, FileMode.Open, FileAccess.Read)

Using br As New BinaryReader(fs)

imgBytes = br.ReadBytes(CInt(fs.Length))

End Using

End Using
' افزودن پارامترها

cmd.Parameters.AddWithValue("@Name", name)

cmd.Parameters.AddWithValue("@ImageData", imgBytes)
' اجرای دستو... ← ادامه مطلب در magicfile.ir