فروم برنامه نویسی را در گوگل محبوب کنید :
+ پاسخ به موضوع
نمایش نتایج: از شماره 1 تا 1 , از مجموع 1
  1. #1
    Administrator
    تاریخ عضویت
    Sep 2010
    محل سکونت
    تهران
    نوشته ها
    229
    تشکر کردن
    24
    تشکر شده 139 بار در 77 پست

    Lightbulb آموزش تصویری اتصال به بانک اطلاعاتی Access در Visual Basic .NET

    نرم افزار اکسس (Microsoft Office Access) از سری نرم افزار های آفیس است که برای ایجاد و ویرایش بانک اطلاعاتی به کار می رود. پسوند بانک های اطلاعاتی اکسس MDB است. ما می توانیم از این نوع بانک اطلاعتی (همانند SQL) در ویژوال بیسیک استفاده کنیم. وقتی یک بانک اطلاعاتی را به یک برنامه ی ویژوال بیسیک اضافه می کنیم، در هنگام کامپایل یک کپی از بانک در کنار برنامه ی کامپایل شده قرار داده می شود. برنامه در هنگام بارگذاری از این بانک استفاده می کند و در صورتی که این بانک را پیدا نکرد با یک خطا روبه رو می شویم.
    در ادامه نحوه ی اضافه کردن بانک اطلاعاتی اکسس را به یک برنامه در ویژوال بیسیک دات نت آموزش می دهیم. این آموزش همراه با نحوه ی کد نویسی برای بانک و بررسی خطا است.

    محیط استفاده شده برای آموزش Visual Studio 2005 است!
    ابتدا یک طرح جدید از نوع Windows Application ایجاد می کنیم:


    از منوی Data گزینه ی Add New Data Source را انتخاب می کنیم:


    در پنجره ی ظاهر شده Database را انتخاب می کنیم و Next را می زنیم:


    در مرحله بعد روی دکمه ی New Connection کلیک می کنیم:


    در پنجره ی جدید با نام Add Connection، روی دکمه ی Change کلیک می کنیم:


    سپس در پنجره ی Change Data Source گزینه Microsoft Access Database File رو بر می گزینیم و بر روی OK کلیک می کنیم:


    با این کار ظاهر پنجره ی Add Connection تغییر کرده و به شکل زیر در می آید. اکنون با کلیک بر روی دکمه ی Browse فایل MDB مورد نظر خورد را نتخاب می کنیم و در آخر با زدن OK یک اتصال از برنامه به
    فایل MDB ایجاد می کنیم:


    در مرحله بعدی نام اتصال را تایپ می کنیم و Next را می زنیم:


    در مرحله ی آخر جداول مورد نظر در فایل MDB را انتخاب می کنیم و با زدن Finish دیگر همه چیز تمام است:





    بررسی کنترل Data Grid View :
    برای مشاهده ی محتویات جدول و اعمال تغییر در آن مسیر زیر را دنبال می کنیم:


    حال اگر بخواهیم یک بانک اطلاعاتی را در محیط برنامه (روی فرم اصلی) نمایش دهیم باید از کنترل Data Grid View استفاده کنیم. با دابل کلیک کردن روی این کنترل آن را به برنامه ی خویش اضافه می کنیم:


    این کنترل شامل یک سری تنظیمات اصلی است که آن ها در زیر مشاهده می کنید:

    برای اینکه DataGridView جدول بانک اطلاعاتی را نمایش دهد به طریق زیر عمل کرده و جدول مورد نظر خود را انتخاب می کنیم:


    با این کار یک Component از نوع BindingSource به برنامه اضافه می شود:

    آموزش کد نویسی :


    حالا به معرفی چند کد ساده برای کنترل DataGridView1 می پردازیم:
    خواندن و نوشتن مقدار یک سلول:

    کد:
    خواندن: DataGridView1.Rows.Item(Row Index As Integer).Cells(Cell Index As Integer).Value.ToString مقداردهی: مقدار = DataGridView1.Rows.Item(Row Index As Integer).Cells(Cell Index As Integer).Value








    بررسی تعداد سطر و ستون:

    کد:
    تعداد ردیف: DataGridView1.Rows.Count.ToString تعداد ستون: DataGridView1.Columns.Count.ToString




    خواندن و نوشتن عنوان هر ستون:

    کد:
    خواندن: DataGridView1.Columns.Item(Row Index As Integer).HeaderText.ToString نوشتن: عنوان = DataGridView1.Columns.Item(Row Index As Integer).HeaderText





    بررسی ردیف و سلول جاری:

    کد:
    ردیف: DataGridView1.CurrentRow.ToString سلول: DataGridView1.CurrentCell.ToString





    بررسی سلول های انتخاب شده:
    این کد ها زمانی به کار برده می شوند که کاربر چندین سطر و ستون را انتخاب کرده باشد. البته با این کد می توانیم سلول های انتخاب شده را خودمان تعیین نماییم!
    کد:
    DataGridView1.SelectedCells.Count.ToString





    بررسی خطا ها:
    مهم ترین خطایی که برنامه را متوقف می کند، خطای پیدا نکردن بانک اطلاعاتی است. برای کنترل این خطا می توانیم خط:
    (Me.Nomre_ResanTableAdapter.Fill(Me.Nomre_ResanDataSet.Nomre_Resan
    را بین:
    کد:
    Try Me.Nomre_ResanTableAdapter.Fill(Me.Nomre_ResanDataSet.Nomre_Resan) Catch Msgbox("Can not Find Database") End Try




    قرار دهیم.سایر خطا ها مانند وارد کردن داده ی غلط و امثال آن به طور خودکار توسط برنامه کنترل می شوند.







    دستورات کلی :
    * ساخت بانک اکسس:
    1. ابتدا در اکسس یک دیتابیس به اسم db1 بسازید.
    2. این دیتابیس دارای یک جدول به اسم t1 باشد؛ که این جدول حاوی سه فیلد میباشد:
    * کد فرد( scode) (این فیلد کلید است و AutoNumber است).
    * نام فرد(fname).
    * نام خانوادگی فرد (lname).
    3. توجه کنید چون من از Visual Studio 2005 استفاده میکنم از Access 2003 استفاده کردم.
    4. حال فایل 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()



    - توضیح کد:1. بوسیله شیء OleDbConnection به بانک اطلاعاتی اکسس وصل میشویم( که ما نام آنرا ocn گذاشتیم)؛ بوسیله خصوصیت ConnectionString مشخص میکنیم که مسیر بانک کجاست و اگر بانک دارای رمز بود همینجا رمز آنرا مشخص میکنیم؛ (میتوانید با مراجعه به این سایت انواع ConnectionString های مورد نیاز برای اتصال به انواع بانک های اطلاعاتی را مشاهده کنید).
    2. شی OleDbCommand برای نوشتن دستورات SQL ای که تراکنش خاصی را در بانک اکسس اعمال میکنند استفاده میشود(که ما نام آنرا ocm گذاشتیم)؛ خصوصیت Connection آنرا را برابر Connection موردنظر خود قرار میدهیم (منظور ocn) ؛ و خصوصیت CommandText آنرا برابر دستور SQLای که برای خواندن اطلاعات از بانک استفاده میشود، قرار میدهیم (منظور دستور SELECT است).
    3. حال باید اطلاعات مورد نظر را خواند و درون DataTable (که مکانی در حافظه اصلی اشغال میکند) قرار داد، برای این منظور ما از شیء واسطه ای به اسم OleDbDataAdapter برای بانک اکسس استفاده میکنیم؛ بعد خصوصیت SelectCommand شیء DataAdapter را برابر Command ی که در بالا گفته شد قرار میدهیم (منظور ocm) ؛ و بوسیله متد Fill ، اطلاعات را خوانده و درون DataTable میریزیم (منظور dt).
    4. بعد خصوصیت DataSource کنترل DataGridView را برابر DataTable (منظور dt)قرار دادیم.
    5. بعد بوسیله متد Dispose اشیاء ساخته شده را از حافظه پاک کردیم(استفاده بهینه از حافظه).
    6. اگر دقت کرده باشید قبل نام همه اشیاء کلمه Oledb قرار دارد که نشان میده ما داریم با بانک اکسس کار میکنیم.* درج اطلاعات (INSERT) در بانک :- تکه کد زیر اطلاعات مو جود در Textbox1 و TextBox2 را در جدول t1 درج میکند:



    Dim ocn As New System.Data.OleDb.OleDbConnection
    Dim ocm As New System.Data.OleDb.OleDbCommandocn.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()




    - توضیح کد:
    1. ابتدا به بانک متصل میشویم(در بالا توضیح داده شده).
    2. در خصوصیت CommandText شیء OleDbCommand (منظور ocm) دستور درج را مینویسیم؛ که من آنرا به دو صورت نوشتم:
    · روش اول یک روش منسوخ شده است و قابل اطمینان نیست چون امکان SQL Injection وجود دارد (در یک مقاله در مورد SQL Injection هم توضیح خواهم داد).
    · روش دوم یک روش استاندارد است.
    3. ما برای تراکنش SELECT نیاز نداریم که Connection ایجاد شده را باز کنیم و ببندیم، ولی برای تراکنش های INSERT,DELETE,UPDATE ابتدا باید Connection را Open کنیم .
    4. ما بعد از Open کردن Connection ، Command مورد نظرمان را بوسیله ExecuteNonQuery اجرا کردیم و بعد Connection را Close کردیم و اشیاء مورد نظر را Dispose کردیم.
    5. میتوان شیء 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.OleDbCommandocn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "db1.mdb"ocm.Connection = ocnocm.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.OleDbCommandocn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "db1.mdb"ocm.Connection = ocnocm.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()













    موضوعات مشابه:


    نجات یک انسان همانند نجات تمام بشریت است (قرآن مجید)
    ایمیل سفارش پروژه : majidas2006@gmail.com
    www.2daydownload.com

  2. کاربران زیر 2 از kingkong برای این پست مفید تشکر کرده اند :

    k1_24 (09-17-2011), sarehkar (02-10-2012)


 
+ پاسخ به موضوع

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید