سورس کد نحوه کار با دیتابیس اکسس (MS Access) در ویژوال بیسیک دات نت (VB.Net)


---
در دنیای برنامه‌نویسی، یکی از مهم‌ترین و پرکاربردترین فعالیت‌ها، کار با پایگاه‌های داده است. در این راستا، دیتابیس اکسس (MS Access) به دلیل سادگی، سبکی و کارایی مناسب، بسیار محبوب است. برنامه‌نویسان زیادی، چه مبتدی و چه حرفه‌ای، برای مدیریت داده‌ها و انجام عملیات CRUD (ایجاد، خواندن، به‌روز رسانی و حذف) از آن بهره می‌برند. در این مقاله، قصد داریم به صورت جامع و کامل، نحوه کار با دیتابیس اکسس در ویژوال بیسیک دات نت (VB.Net) را توضیح دهیم. هدف این است که با ساختارهای پایه، کدهای نمونه و نکات مهم، آشنایی کامل پیدا کنید.
---
۱. شروع کار با دیتابیس اکسس در ویژوال بیسیک دات نت
قبل از هر چیز، نیاز دارید که یک فایل دیتابیس اکسس (.accdb یا .mdb) داشته باشید. فرض کنید، یک فایل به نام "SampleDB.accdb" دارید که شامل جدول‌هایی مانند "Customers" است. این جدول، فیلدهایی مانند "ID"، "Name"، "Email" و "Phone" دارد. حالا، می‌خواهید به این دیتابیس متصل شوید و عملیات مختلف انجام دهید.
برای اتصال، باید از فضای نام `System.Data.OleDb` استفاده کنید، زیرا اکسس از پروتکل OleDb پشتیبانی می‌کند. در نتیجه، ابتدا باید اطمینان حاصل کنید که پروژه شما مرجع `System.Data` را دارد و در ابتدای کلاس، این Namespace وارد شده است:
vb  
Imports System.Data.OleDb

۲. ساخت کانکشن (Connection) به دیتابیس
برای برقراری ارتباط، باید یک شیء `OleDbConnection` بسازید. آدرس فایل دیتابیس را به عنوان پارامتر وارد می‌کنید. ساختار کد به صورت زیر است:
vb  
Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Path\to\SampleDB.accdb;"
Dim connection As New OleDbConnection(connectionString)

در اینجا، توجه کنید که `Path\to\SampleDB.accdb` باید مسیر صحیح فایل دیتابیس روی سیستم باشد. اگر از نسخه‌های قدیمی‌تر اکسس استفاده می‌کنید، ممکن است نیاز باشد `Microsoft.Jet.OLEDB.4.0` به جای `Microsoft.ACE.OLEDB.12.0` استفاده کنید.
۳. عملیات خواندن داده‌ها (SELECT)
برای خواندن داده‌ها، معمولاً از `OleDbDataAdapter` و `DataTable` بهره می‌گیریم. فرض کنید، می‌خواهید لیستی از مشتریان را نمایش دهید. نمونه کد:
vb  
Dim query As String = "SELECT * FROM Customers"
Dim adapter As New OleDbDataAdapter(query, connection)
Dim dataTable As New DataTable()
Try
connection.Open()
adapter.Fill(dataTable)
' حالا می‌توانید داده‌ها را در کنترل‌هایی مثل DataGridView نمایش دهید
Catch ex As Exception
MessageBox.Show("خطا در اتصال یا خواندن داده‌ها: " & ex.Message)
Finally
connection.Close()
End Try

در این نمونه، با باز کردن اتصال، داده‌ها از دیتابیس خوانده می‌شود و در DataTable قرار می‌گیرد. سپس، می‌توانید این دیتا را در کنترل‌های مختلف نمایش دهید.
۴. افزودن رکورد جدید (INSERT)
برای افزودن رکورد جدید، باید از دستور SQL `INSERT INTO` استفاده کنید. نمونه:
vb  
Dim insertQuery As String = "INSERT INTO Customers (Name, Email, Phone) VALUES ('Ali', 'ali@example.com', '09121234567')"
Dim command As New OleDbCommand(insertQuery, connection)
Try
connection.Open()
command.ExecuteNonQuery()
MessageBox.Show("رکورد با موفقیت اضافه شد.")
Catch ex As Exception
MessageBox.Show("خطا در افزودن رکورد: " & ex.Message)
Finally
connection.Close()
End Try

در این حالت، پس از باز کردن اتصال، دستور را اجرا می‌کنید و در صورت موفقیت، پیام تایید را نمایش می‌دهید.
۵. بروزرسانی رکوردها (UPDATE)
برای ویرایش داده‌های موجود، از دستور `UPDATE` بهره می‌بریم. فرض کنید می‌خواهید نام مشتری با ID=1 را تغییر دهید:
vb  
Dim updateQuery As String = "UPDATE Customers SET Name='Reza' WHERE ID=1"
Dim command As New OleDbCommand(updateQuery, connection)
Try
connection.Open()
Dim rowsAffected As Integer = command.ExecuteNonQuery()
If rowsAffected > 0 Then
MessageBox.Show("رکورد بروزرسانی شد.")
Else
MessageBox.Show("رکوردی یافت نشد.")
End If
Catch ex As Exception
MessageBox.Show("خطا در بروزرسانی: " & ex.Message)
Finally
connection.Close()
End Try

این کد، نام مشتری با ID مشخص را تغییر می‌دهد و تعداد رکوردهای ویرایش شده را برمی‌گرداند.
۶. حذف رکورد (DELETE)
برای حذف داده‌ها، باید از دستور `DELETE` استفاده کنیم. به عنوان نمونه:
vb  
Dim deleteQuery As String = "DELETE FROM Customers WHERE ID=2"
Dim command As New OleDbCommand(deleteQuery, connection)
Try
connection.Open()
Dim rowsDeleted As Integer = command.ExecuteNonQuery()
If rowsDeleted > 0 Then
MessageBox.Show("رکورد حذف شد.")
Else
MessageBox.Show("رکوردی یافت نشد.")
End If
Catch ex As Exception
MessageBox.Show("خطا در حذف: " & ex.Message)
Finally
connection.Close()
End Try

این نمونه، رکورد با ID=2 را حذف می‌کند.
---
۷. نکات مهم و بهترین روش‌ها
- همیشه قبل از اجرای عملیات‌های تغییر دهنده، اتصال را باز کنید و پس از آن ببندید. استفاده از بلوک `Using` نیز توصیه می‌شود، چون از نظر مدیریت منابع بهتر است.
- در صورت استفاده از پارامترهای ورودی، حتماً از `OleDbParameter` بهره ببرید تا از حملات SQL Injection جلوگیری کنید. نمونه:
vb  
Dim cmd As New OleDbCommand("INSERT INTO Customers (Name, Email, Phone) VALUES (?, ?, ?)", connection)
cmd.Parameters.AddWithValue("?", "Ali")
cmd.Parameters.AddWithValue("?", "ali@example.com")
cmd.Parameters.AddWithValue("?", "09121234567")

- به مسیر فایل دیتابیس دقت کنید. اگر مسیر ثابت است، بهتر است آن را در فایل پیکربندی قرار دهید.
- هنگام کار با داده‌های بزرگ، استفاده از DataReader به جای DataAdapter مناسب‌تر است، چون کارایی بالاتری دارد.
- همیشه خطاهای احتمالی را مدیریت کنید تا برنامه شما مقاوم باشد و کاربر خطای واضحی دریافت کند.
---
۸. جمع‌بندی و نتیجه‌گیری
کار با دیتابیس اکسس در ویژوال بیسیک دات نت، با استفاده از کلاس‌های پایه `OleDbConnection`, `OleDbCommand`, `OleDbDataAdapter` و `DataTable` به سادگی قابل انجام است. مهم‌ترین نکته، مدیریت صحیح اتصال‌ها، استفاده از دستورات SQL امن و پیروی از بهترین روش‌های برنامه‌نویسی است. با تمرین و تکرار، می‌توانید عملیات پیچیده‌تری مانند تراکنش‌ها، گروهبندی، فیلترهای پیشرفته و ایجاد فرم‌های تعاملی را نیز پیاده‌سازی کنید.
در نهایت، با توجه به ساختار ساده و سبک بودن، دیتابیس اکسس گزینه‌ای مناسب برای پروژه‌های کوچک و متوسط است، ولی در پروژه‌های بزرگ‌تر، پیشنهاد می‌شود از پایگاه‌های داده قوی‌تر مانند SQL Server بهره ببرید.
---
آیا سوال دیگری دارید یا نیاز به نمونه‌های بیشتری دارید؟