50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

اتصال پایگاه داده به ویژیال

سلام به همگی

من تازه برنامه نویسی ویژیال بیسیک رو شروع کردم میخواستم راهنماییم کنید چجوری پایگاه داده access رو به برنامه اضافه کنم

با تشکر

پرسیده شده در 1396/05/19 توسط

2 پاسخ

0

با سلام شما باید کامپوننت های مورد نیاز رو به برنامه اضاف کنید اگر از VB6 که منسوخ شده استفاده میکنید .

قسمت General کلیک راست کنید .

Microsoft DataGrid رو اضاف میکنید .

Microsoft ADO Data رو هم اضاف کنید .

بعدش Ok بزنید و بعدش روی ADO Data روی فرم که آوردید کلیک راست کنید و گزینه آخر رو کلیک کنید و وارد محیط ویزارد میشید که میتونید بقیش رو خودتون به آسونی انجام بدیدن .

ولی اگر از VB.net اسفتاده میکنید باید کارو کنید :

--------------------------------------------------------------------------------------------------

. ابتدا در اکسس یک دیتابیس به اسم db1 بسازید.

۲. این دیتابیس دارای یک جدول به اسم t1 باشد؛ که این جدول حاوی سه فیلد میباشد:

  • کد فرد( scode) (این فیلد کلید است و AutoNumber است).
  • نام فرد(fname).
  • نام خانوادگی فرد (lname).

۴. حال فایل 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()

منبع : Mpsfot

پاسخ در 1396/05/19 توسط

پاسخ شما