"> اتصال به بانک Access در VB.NET | ام اس پی سافت

اتصال به بانک Access در VB.NET

* ساخت بانک اکسس:
۱. ابتدا در اکسس یک دیتابیس به اسم db1 بسازید.
۲. این دیتابیس دارای یک جدول به اسم t1 باشد؛ که این جدول حاوی سه فیلد میباشد:
* کد فرد( scode) (این فیلد کلید است و AutoNumber است).
* نام فرد(fname).
* نام خانوادگی فرد (lname).
۳. توجه کنید چون من از Visual Studio 2005 استفاده میکنم از Access 2003 استفاده کردم.
۴. حال فایل db1.mdb را در هر مسیری که دوست دارید قرار دهید (ما در اینجا آنرا در کنار فایل exe برناممون قرار دادیم و بعد بوسیله Application.StartupPath مسیر آنرا بدست آوردیم).

* خواندن اطلاعات (SELECT) از بانک و ریختن آن در یک dataGridView :

– تکه کد زیر اطلاعات جدول t1 را خوانده و در کنترل dataGridView1 که بر روی فرم قرار دارد میریزد:

Dim ocn As New System.Data.OleDb.OleDbConnection
Dim ocm As New System.Data.OleDb.OleDbCommand
Dim oda As New System.Data.OleDb.OleDbDataAdapter
Dim dt As New DataTable

ocn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Application.StartupPath + “db1.mdb”

ocm.Connection = ocn
ocm.CommandText = “SELECT * FROM t1”

oda.SelectCommand = ocm
oda.Fill(dt)
DataGridView1.DataSource = dt

dt.Dispose()
oda.Dispose()
ocm.Dispose()
ocn.Dispose()

– توضیح کد:

۱. بوسیله شیء OleDbConnection به بانک اطلاعاتی اکسس وصل میشویم( که ما نام آنرا ocn گذاشتیم)؛ بوسیله خصوصیت ConnectionString مشخص میکنیم که مسیر بانک کجاست و اگر بانک دارای رمز بود همینجا رمز آنرا مشخص میکنیم؛ (میتوانید با مراجعه به این سایت انواع ConnectionString های مورد نیاز برای اتصال به انواع بانک های اطلاعاتی را مشاهده کنید).

۲. شی OleDbCommand برای نوشتن دستورات SQL ای که تراکنش خاصی را در بانک اکسس اعمال میکنند استفاده میشود(که ما نام آنرا ocm گذاشتیم)؛ خصوصیت Connection آنرا را برابر Connection موردنظر خود قرار میدهیم (منظور ocn) ؛ و خصوصیت CommandText آنرا برابر دستور SQLای که برای خواندن اطلاعات از بانک استفاده میشود، قرار میدهیم (منظور دستور SELECT است).

۳. حال باید اطلاعات مورد نظر را خواند و درون DataTable (که مکانی در حافظه اصلی اشغال میکند) قرار داد، برای این منظور ما از شیء واسطه ای به اسم OleDbDataAdapter برای بانک اکسس استفاده میکنیم؛ بعد خصوصیت SelectCommand شیء DataAdapter را برابر Command ی که در بالا گفته شد قرار میدهیم (منظور ocm) ؛ و بوسیله متد Fill ، اطلاعات را خوانده و درون DataTable میریزیم (منظور dt).

۴. بعد خصوصیت DataSource کنترل DataGridView را برابر DataTable (منظور dt)قرار دادیم.
۵. بعد بوسیله متد Dispose اشیاء ساخته شده را از حافظه پاک کردیم(استفاده بهینه از حافظه).
۶. اگر دقت کرده باشید قبل نام همه اشیاء کلمه Oledb قرار دارد که نشان میده ما داریم با بانک اکسس کار میکنیم.

* درج اطلاعات (INSERT) در بانک :

– تکه کد زیر اطلاعات مو جود در Textbox1 و TextBox2 را در جدول t1 درج میکند:

Dim ocn As New System.Data.OleDb.OleDbConnection
Dim ocm As New System.Data.OleDb.OleDbCommand

ocn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Application.StartupPath + “db1.mdb”

ocm.Connection = ocn

‘روش اول
‘ocm.CommandText = “INSERT INTO t1 (fname,lname)VALUES(‘” + textBox1.Text + “‘,'” + textBox2.Text + “‘)”

‘روش دوم
ocm.CommandText = “INSERT INTO t1 (fname,lname)VALUES(@p1,@p2)”
ocm.Parameters.Clear()
ocm.Parameters.AddWithValue(“@p1”, TextBox1.Text)
ocm.Parameters.AddWithValue(“@p2”, TextBox2.Text)

ocn.Open()
ocm.ExecuteNonQuery()
ocn.Close()

ocm.Dispose()
ocn.Dispose()

– توضیح کد:

۱. ابتدا به بانک متصل میشویم(در بالا توضیح داده شده).

۲. در خصوصیت CommandText شیء OleDbCommand (منظور ocm) دستور درج را مینویسیم؛ که من آنرا به دو صورت نوشتم:

· روش اول یک روش منسوخ شده است و قابل اطمینان نیست چون امکان SQL Injection وجود دارد (در یک مقاله در مورد SQL Injection هم توضیح خواهم داد).

· روش دوم یک روش استاندارد است.

۳. ما برای تراکنش SELECT نیاز نداریم که Connection ایجاد شده را باز کنیم و ببندیم، ولی برای تراکنش های INSERT,DELETE,UPDATE ابتدا باید Connection را Open کنیم .

۴. ما بعد از Open کردن Connection ، Command مورد نظرمان را بوسیله ExecuteNonQuery اجرا کردیم و بعد Connection را Close کردیم و اشیاء مورد نظر را Dispose کردیم.

۵. میتوان شیء Command را به سه روش اجرا کرد:

· ExecuteNonQuery : اگر Command مقدار خروجی نداشته باشد آنرا به این صورت اجرا میکنیم.

· ExecuteReader : اگر برای خواندن اطلاعات از DataReader استفاده کنیم Command را به این صورت اجرا میکنیم.

· ExecuteScalar : اگر در Command از توابعی مانند sum,count و… استفاده شود از این نوع اجرا استفاده میکنیم.

* حذف اطلاعات (DELETE) از بانک :

– تکه کد زیر کد فرد مورد نظر را از TextBox1 میگیرد و آنرا حذف میکند:

Dim ocn As New System.Data.OleDb.OleDbConnection
Dim ocm As New System.Data.OleDb.OleDbCommand

ocn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Application.StartupPath + “db1.mdb”

ocm.Connection = ocn

ocm.CommandText = “DELETE FROM t1 WHERE scode=@p1”
ocm.Parameters.Clear()
ocm.Parameters.AddWithValue(“@p1”, TextBox1.Text)

ocn.Open()
ocm.ExecuteNonQuery()
ocn.Close()

ocm.Dispose()
ocn.Dispose()

* ویرایش اطلاعات (UPDATE) بانک :

– تکه کد زیر کد فرد مورد نظر را از TextBox1 میگیرد و نام و نام خانوادگی آنرا برابر TextBox2 و TextBox3 قرار میدهد:

Dim ocn As New System.Data.OleDb.OleDbConnection
Dim ocm As New System.Data.OleDb.OleDbCommand

ocn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Application.StartupPath + “db1.mdb”

ocm.Connection = ocn

ocm.CommandText = “UPDATE t1 SET fname=@p1,lname=@p2 WHERE scode=@p3”
ocm.Parameters.Clear()
ocm.Parameters.AddWithValue(“@p1”, TextBox2.Text)
ocm.Parameters.AddWithValue(“@p2”, textBox3.Text)
ocm.Parameters.AddWithValue(“@p3”, TextBox1.Text)

ocn.Open()
ocm.ExecuteNonQuery()
ocn.Close()

ocm.Dispose()
ocn.Dispose()

  • پسورد: www.mspsoft.com
مسعود شریفی پور

از سال 88 که با برنامه نویسی آشنا شدم خیلی علاقه مند بودم یک بستر آموزشی بسازم در فضای وب و به انتشار آموزش های در این زمینه بپردازم.حالا یک تیم داریم و با قدرت رو به جلو حرکت میکنیم.

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

    alu پاسخ

    دستت درد نکنه خیلی عالی توضیح دادی

    پیمان پاسخ

    با عرض سلام و خسته نباشید .
    خیلی خیلی ممنون از آموزشتون .
    یک سوال داشتم:
    چطور میتونم اطلاعات رکورد جاری رو در تکست باکس قرار بدم؟
    ممنون از سایت خوبتون

      M.S.P Soft پاسخ

      یه دفترچه تلفن به همین زبان روی سایت هستش میتونه کمکت در این زمینه!

    میثم پاسخ

    من یه نمونه از برنامه اینجا گذاشتم که ویژوال استدیو 2013 و اس کیو ال 2014 هستش مشکل اینجاست bindingNavigator که باید تو DataGridView بعدی و قبلی و آخری و اولی بره کار نمیکنه و DataGridView هم صفحه بندی نداره کسی میتونه کمکم کنه DataGridView رو صفحه بندی کنم مثلا تو هر صفحه 10 تا آیتم لود بشه و با زدن یک باتن بره صفحه بعد و یا صفحه قبل و DataGridView رو به bindingNavigator درست اتصال بده؟ با ویزارد نمیخوام با کد نویسی میخوام این مشکل رو حل کنم تو همین برنامه ممنون از کمک و راهنماییتون

    ali پاسخ

    ببخشید اگه اکسس رمز داشت چی کار کنیم ؟

      مسعود شریفی پاسخ

      به این صورت استفاده کنید.
      n = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\BioDB.mdb ;Password=1966;");

      Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;Jet OLEDB:Database Password=MyDbPassword;

کدیشن ! مارکت پروژه های برنامه نویسی راه اندازی شدیه توکه پا بریم ببینم