دوستان عزیز ، امیدوارم که روز خوبی را پشت سر گذاشته باشید. اموزش امروز ما درمورد ارتباط با دیتابیس با استفاده از ado میباشد.این درس مقدمه ای به ADO.NET می باشد. ابتدا مفاهیم و آبجکت هایی را معرفی می کند که در مورد آنها در درس های بعدی فرا خواهید گرفت. در اینجا اهداف این درس را مشاهده می کنید:

· یادگیری اینکه ADO.NET چیست.

· درک اینکه یک ارائه دهندهی داده ( data provider) چیست.

· درک اینکه آبجکت اتصال (connection object) چیست.

· درک اینکه آبجکت دستور (command object) چیست.

· درک اینکه آبجکت DataReader چیست.

· درک اینکه آبجکت DataSet چیست.

· درک اینکه آبجکت DataAdapterچیست.

مقدمه:

ADO.NET یک مجموعه ی آبجکت محور از کتابخانه هایی است که به شما اجازه می دهد تا با منبع داده تعامل داشته باشید. متداولا منبع داده یک دیتابیس می باشد، اما می تواند یک فایل متن، یک صفحه ی اکسل ( Excel spreadsheet) یا یک فایل XML باشد. برای اهداف این آموزش بهADO.NET به عنوان راهی برای تعامل با یک دیتابیس نگاه می کنیم.

همانطور که احتمالا مطلع هستید، انواع مختلفی از دیتابیس ها در دسترس می باشند. برای مثال اگر بخواهیم تعداد کمی را نام ببریم Microsoft SQL Server، Microsoft Access، Oracle، Borland Interbase و IBM DB2 می باشند. برای منحصر به فرد بودن این آموزش همه ی مثال ها از SQL Server استفاده خواهند کرد.

می توانید Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) را از اینجا دانلود کنید:

http://www.microsoft.com/sql/msde/downloads/download.asp

MSDE حاوی مواردی در مورد چگونگی اجرای یک نصب می باشد. به هرحال برای راحتی شما در اینجا دستورالعمل هایی از چگونگی نصب MSDE وجود دارد:

http://www.asp.net/msde/default.aspx?tabindex=0&tabid=1

MSDE 2000 یک ورژن کوچک از SQL Server می باشد، بنابراین هرچه در این آموزش یاد بگیرید و همه ی کدها با SQL Server کار خواهند کرد. مثال ها از دیتابیس Northwind استفاده خواهند کرد. این یک آموزش مخصوص ADO.NET. MSDE می باشد و بخشی از ADO.NET نیست، اما یکی از چندین منبع داده ای است که می توانید با استفاده از ADO.NET با آن تعامل داشته باشید.

ارائه دهنده های داده (Data provider):

می دانیم که ADO.NET به ما اجازه می دهد تا با انواع مختلف منابع داده و انواع مختلف دیتابیس ها تعامل داشته باشیم. به هرحال یک مجموعه ی مجزا از گروه هایی که به شما اجازه دهند آن را به طور جهانی انجام دهید، وجود ندارد. از آنجایی که منابع داده ی مختلف پروتکول های مختلفی را نمایش می دهند، ما نیاز به راهی برای ارتباط با منابع داده ی درست با استفاده از پروتکول درست داریم. برخی منابع داده ی قدیمی تر از پروتوکل ODBC استفاده می کنند، بسیاری از منابع داده ی جدیدتر از پروتوکل OleDb استفاده می کنند و هر روز منابع داده ی بیشتری وجود دارند که به شما اجازه ی ارتباط مستقیم با آنها را از طریق .NET ADO.NET می دهند.

ADO.NET یک راه نسبتا متداول برای تعامل با مابع داده ارائه می دهد، اما در مجموعه های مختلف از کتابخانه ها برای هر راه که می توانید با منبع داده صحبت کنید، قرار می گیرد. این کتابخانه ها ارائه کننده های داده (Data Providers) نامیده می شوند و معمولا با پروتوکل یا منبع داده ای که اجازه ی تعامل با آن را به شما می دهند، نام گذاری می شوند. جدول ۱ برخی ارائه کننده های معروف ، پیشوند API که استفاده می کنند، و نوع منبع داده که اجازه ی تعامل با آن به شما داده می شود را لیست می کند.

جدول ۱: ADO.NET Data Providers کتابخانه هایی هستند که به یک روش متداول اجازه ی تعامل با منابع داده ی خاص یا پروتوکل ها را می دهند. کتابخانه ی API ها دارای پیشوندهایی است که نشان می دهد کدام ارائه کننده را پشتیبانی می کنند.

نام ارائه کننده

پیشوند API

توصیف منبع داده

ODBC Data Provider

Odbc

منابع داده ای با یک اینترفیس ODBC. معمولا دیتابیس های قدیمی تر.

OleDb Data Provider

OleDb

منابع داده ای که یک اینترفیس OleDb نمایش می دهند، به عنوان مثال Access یا Excel

Oracle Data Provider

Oracle

برای دیتابیس های Oracle

SQL Data Provider

Sql

برای تعامل با Microsoft SQL Server.

Borland Data Provider

Bdp

دسترسی عمومی به بسیاری از دیتابیس ها مانند Interbase, SQL Server, IBM DB2 و Oracle.

یک مثال می تواند به شما کمک کند که پیشوند API را درک کنید. یکی از اولین آبجکت هایی که در مورد آن فرا خواهید گرفت آبجکت اتصال (connection object) می باشد که به شما اجازه ی برقراری یک اتصال با منبع داده را می دهد. اگر برای اتصال به یک منبع داده که یک اینترفیس OleDb را نمایش می دهد از OleDb Data Provider استفاده کنیم، از یک ّبجکت اتصال به نام OleDbConnection استفاده خواهیم کرد. به طور مشابه نام آبجکت اتصال دارای پیشوند Odbc یا Sql برای یک آبجکت OdbcConnection روی یک منبع داده ی Odbc یا یک آبجکت SqlConnection روی یک دیتابیس SQL Server می باشد. از آنجایی که در این آموزش از MSDE استفاده می کنیم (یک ورژن پایین از SQL Sever)، همه ی آبجکت های API دارای پیشوند Sql خواهند بود، به عنوان مثال SqlConnection.

آبجکت های ADO.NET:

ADO.NET حاوی آبجکت های زیادی است که شما می توانید برای کار با داده از آن استفاده کنید. این بخش برخی آبجکت های اولیه مورد استفاده ی شما را معرفی می کند. در طول آموزش این بخش آبجکت های ADO.NET بیشتری از دیدگاه چگونگی استفاده ی آنها در یک درس خاص، به شما نمایش داده خواهد شد. آبجکت های زیر مواردی هستند که شما باید بشناسید. یادگیری در مورد آنها به شما دیدگاهی در مورد کارهایی که می توانید با داده در هنگام استفاده از ADO.NET انجام دهید، ارائه خواهد داد.

آبجکت sqlconnection

برای تعامل با یک دیتابیس باید با آن اتصال برقرار کنید. این اتصال به تشخیص سرور دیتابیس، نام دیتابیس، نام یوزر، پسوورد و دیگر پارامترهایی که برای اتصال به دیتابیس لازم می باشند، کمک می کند. یک آبجکت اتصال با آبجکت های فرمان استفاده می شود، بنابراین خواهند دانست که فرمان را روی کدام دیتابیس اجرا کنند.

آبجکت sqlcommand

فرایند تعامل با دیتابیس به این معناست که باید فعالیت هایی را که می خواهید اتفاق بیفتند، مشخص کنید. این کار با یک آبجکت دستور (command object) اتفاق می افتد. شما از این آبجکت برای ارسال عبارات SQL به دیتابیس استفاده می کنید. یک آبجکت دستور از یک آبجکت اتصال برای تعیین دیتابیسی که باید با آن ارتباط داشته باشید، استفاده می کند. می توانید برای اجرای مستقیم یک فرمان تنها از یک آبجکت دستور استفاده کنید، یا یا یک مرجع را به یک آبجکت فرمان در یک SqlDataAdapter اختصاص دهید که مجموعه ای از دستورات را در خود دارد که روی یک گروه از داده ها کار میکند، همانطور که در زیر بیان می شود.

آبجکت sqlDataReader

در بسیاری از عملکردهای داده لازم است که شما تنها یک جریان از داده برای خواندن دریافت کنید. آبجکت data reader به شما اجازه می دهد تا نتایج یک عبارت SELECT را از یک آبجکت دستور برقرار کنید. به دلایل عملکرد داده ی بازگشتی از data reader جریان سریع forward-only از داده می باشد. این مسئله به این معناست که می توانید داده را فقط به یک روش پی در پی از جریان وارد کنید. این در سرعت مفید می باشد، اما اگر نیاز به یک داده ی اصلاح شده داشته باشید، DataSet برای کار آبجکت بهتری می باشد.

آبجکت DataSet:

آبجکت های DataSet نمایشگر in-memory داده می باشند. آنها حاوی چند آبجکت Datatable می باشند که دارای ردیف ها و ستون هایی است، درست مانند جدول های معمول دیتابیس. می توانید حتی برای ایجاد ارتباطات کل – جز (parent – child) ارتباط های بین جدول ها را تعریف کنید. DataSet منحصرا برای کمک به مدیریت داده در حافظه و پشتیبانی عملکردهای قطع شده روی داده استفاده می شود. DataSet آبجکتی است که توسط همه ی ارائه کننده های داده استفاده می شود، که به همین علت است که دارای یک پیشوند خاص Data Provider نمی باشد.

آبجکت sqlDataAdaptor

گاهی اوقات داده ای که با آن کار می کنید، در درجه ی اول read – only می باشد و به ندرت نیاز به ایجاد تغییر در منبع داده ی تاکید شده دارید. برخی از موقعیت ها نیز ذخیره داده در حافظه را فرا می خوانند تا تعداد فراخوانی های داده های تغییر نیافته را در دیتابیس به حداقل برسانند. تطبیق دهنده ی داده تکمیل این کارها را برای شما با کمک در سازماندهی داده در یک حالت قطع آسان می کند. در هنگام خواندن داده، تطبیق دهنده ی داده یک آبجکت DataSet را پر می کند و هنگام تاکید بر بازگشت تغییرات به دیتابیس، در یک دسته ی مجزا می نویسد. تطبیق دهدنه ی داده حاوی یک ارجاع به آبجکت اتصال می باشد و در هنگام نوشتن روی روی دیتابیس یا خواندن از دیتابیس، اتصال را به طور خودکار باز کرده و یا می بندد. علاوه بر این تطبیق دهنده ی داده حاوی آبجکت دستور می باشد که ارجاع هایی به عملکردهای SELECT, INSERT, UPDATE و DELETE روی داده دارد. شما یک تطبیق دهنده ی داده خواهید داشت که برای هر جدول در DataSet تعریف شده و برای شما از همه ی ارتباطات با دیتابیس مراقبت خواهد کرد. همه ی آنچه لازم است انجام دهید، اطلاع دادن به تطبیق دهنده ی داده میباشد، وقتی که از دیتابیس بارگذاری می کنید و یا روی آن می نویسید.

خلاصه:

ADO.NET یک فن آوری .NET برای تعامل با منابع داده می باشد. شما Data Provider های زیادی دارید که بسته به پروتوکل هایی که استفاده می کنند یا نوع دیتابیس، ارتباط با منابع داده ی مختلف را برای شما امکان پذیر می سازند. بدون توجه به Data Provider مورد استفاده، برای تعامل با یک منبع داده از مجموعه ی مشابهی از آبجکت ها استفاده خواهید کرد. آبجکت SqlConnection به شما اجازه می دهد تا یک اتصال به منبع داده را سازماندهی کنید. آبجکت های SqlCommand به شما اجازه ی ارتباط با منبع داده و ارسال فرمان به آن را می دهند. برای دسترسی سریع forward –only به داده از SqlDataReader استفاده کنید. اگر می خواهید با داده ی قطع شده کار کنید، از یک DataSet استفاده کنید و خواندن و نوشتن را روی منبع داده با استفاده از یک SqlDataAdapter اجرا کنید. این فقط شروع می باشد – اولین درس از چندین درس ADO.NET Tutorial.