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


در دنیای برنامه‌نویسی و توسعه نرم‌افزار، یکی از چالش‌های رایج، مدیریت و نگهداری داده‌های چندرسانه‌ای، به ویژه تصاویر است. مخصوصاً در برنامه‌هایی که نیاز به ذخیره‌سازی و بازیابی تصاویر در پایگاه داده‌های رابطه‌ای مانند SQL Server دارند، اهمیت این موضوع بیشتر می‌شود. در این مقاله، به طور کامل و جامع، نحوه نوشتن سورس کد برای ذخیره‌سازی و بازیابی تصاویر از پایگاه داده SQL Server با استفاده از زبان VB.NET را بررسی می‌کنیم. هدف این است که توضیح دهیم چگونه می‌توان این فرآیند را به‌درستی پیاده‌سازی کرد، از طراحی پایگاه داده گرفته تا کدهای عملی، و نکات مهم در این زمینه را بیان کنیم.

طراحی پایگاه داده برای ذخیره‌سازی تصاویر




قبل از شروع کدنویسی، باید تصمیم بگیریم که چگونه تصاویر را در پایگاه داده ذخیره کنیم. دو روش اصلی وجود دارد:
  1. ذخیره‌سازی تصاویر در فیلدهای BLOB (Binary Large Object): در این روش، تصاویر به صورت باینری در جدول پایگاه داده قرار می‌گیرند. این روش مناسب است اگر حجم تصاویر کم باشد یا نیاز به نگهداری آنها در کنار داده‌های دیگر باشد.

  1. ذخیره مسیر فایل‌های تصویری در پایگاه داده: این روش، مسیر فایل‌های تصویری که در سیستم فایل قرار دارند، در پایگاه داده ثبت می‌شود. این روش اغلب بهتر است، چون حجم پایگاه داده کاهش می‌یابد و مدیریت فایل‌ها راحت‌تر است.
    در این آموزش، تمرکز بر روش اول، یعنی ذخیره‌سازی تصاویر به صورت BLOB در پایگاه داده است.
    برای این کار، جدول زیر در SQL Server ساخته می‌شود:
    sql  

CREATE TABLE Images (

Id INT PRIMARY KEY IDENTITY(1,1),

ImageData VARBINARY(MAX),

ImageName NVARCHAR(255)

);


در این جدول، ستون `ImageData` برای نگهداری تصویر به صورت باینری استفاده می‌شود، و `ImageName` برای نگهداری نام فایل یا هر اطلاعات دیگری مرتبط است.

نوشتن کد VB.NET برای ذخیره تصویر در پایگاه داده




حالا، پس از طراحی پایگاه داده، نوبت به نوشتن کد VB.NET می‌رسد. در این قسمت، باید بتوانیم تصویری را از کاربر انتخاب کنیم، آن را به بایت‌های باینری تبدیل کنیم، و در پایگاه داده ذخیره کنیم.
  1. انتخاب تصویر توسط کاربر:

برای این کار، از کنترل `OpenFileDialog` استفاده می‌کنیم، که به کاربر اجازه می‌دهد فایل تصویری مورد نظر خود را انتخاب کند.
  1. تبدیل تصویر به بایت:

تصویر انتخاب شده باید به آرایه‌ای از بایت‌ها تبدیل شود تا در پایگاه داده قرار گیرد.
  1. اتصال به پایگاه داده و اجرای دستور SQL:

با استفاده از `SqlConnection` و `SqlCommand`، عملیات درج داده را انجام می‌دهیم.
در ادامه، نمونه کد کامل و عملی آورده شده است:
vb.net  

Imports System.Data.SqlClient

Imports System.IO
Public Class Form1

Dim connectionString As String = "Data Source=YOUR_SERVER;Initial Catalog=YOUR_DB;Integrated Security=True"
Private Sub btnBrowse_Click(sender As Object, e As EventArgs) Handles btnBrowse.Click

Dim openFileDialog As New OpenFileDialog()

openFileDialog.Filter = "Image Files|*.jpg;*.jpeg;*.png;*.bmp"
If openFileDialog.ShowDialog() = DialogResult.OK Then

txtImagePath.Text = openFileDialog.FileName

End If

End Sub
Private Function ImageToByteArray(filePath As String) As Byte()

Return File.ReadAllBytes(filePath)

End Function
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click

Dim imgPath As String = txtImagePath.Text

If String.IsNullOrEmpty(imgPath) OrElse Not File.Exists(imgPath) Then

MessageBox.Show("لطفا تصویر معتبر را انتخاب کنید.")

Return

End If
Dim imageBytes As Byte() = ImageToByteArray(imgPath)

Dim imageName As String = Path.GetFileName(imgPath)
Using conn As New SqlConnection(connectionString)

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

Using cmd As New SqlCommand(query, conn)

cmd.Parameters.Add("@ImageData", SqlDbType.VarBinary).Value = imageBytes

cmd.Parameters.Add("@ImageName&qu... ← ادامه مطلب در magicfile.ir