فصل اول
شروع کار با ADO.NET
آنچه در این فصل ارائه خواهد شد:
* شناختن آبجکت های اصلی تشکیل دهنده Microsoft ADO.NET
* ایجاد آبجکت های connection و DataAdapter با استفاده از ویزارد DataAdapter Configuration

* ایجاد اتوماتیک یک dataset
* مرتبط کردن خاصیت های کنترلی به یک DataSet
* بارگذاری داده ها در DataSet در زمان اجرا
ابتدا:

باید بدانید که NET Data Provider . چيست؟
بمنظوراتصال به يک منبع داده ، مي بايست در ابتدا يک Net Data Provider . ، انتخاب گردد . Data Provider ، کلاس هاي لازم بمنظور اتصال به يک منبع داده ، خواندن اطلاعات ، ويرايش ، بهنگام سازي و انجام عمليات متفاوت بر روي داده ها را ارائه مي نمايد . در اين مقاله به تشريح انواع Data Provider پرداخته و با نحوه انتخاب مناسب آنان بمنظور استفاده در برنامه ها ، آشنا خواهيم شد .

NET Data Provider. ، يک Component کليدي ارائه شده بهمراه معماري ADO.NET بوده که امکان ارتباط بين يک منبع داده و يک Component ، يک سرويس وب XML و يا يک برنامه را فراهم مي نمايد. يک NET Data Provider .، امکان اتصال به منبع داده ، بازيابي داده ها ، انجام عمليات بر روي داده ها و بهنگام سازي منبع داده را فراهم مي نمايد. بهمراه فريمورک دات نت ، Provider هاي زير ارائه شده است :
OLE DB .NET Data Provider

SQL Server .NET Data Provider
در آينده براي ساير منابع داده ، NET Data Provider . مربوطه ايجاد و در دسترس عموم برنامه نويسان قرار خواهد گرفت. هر Provider ، مسئوليت پياده سازي کلاس هاي عمومي ADO.NET را برعهده خواهد داشت . دستاورد رويکرد فوق ، ارتباط با منابع داده متفاوت با استفاده از يک روش يکسان از طريق محيط هاي برنامه نويسي خواهد بود .

کلاس هاي NET Data Provider .
ADO.NET ، از NET Data Provider. ، بمنظور ارتباط به منبع داده ، بازيابي ، عمليات برروي داده ها و بهنگام سازي منبع داده استفاده مي نمايد . هر Provider ، بگونه اي طراحي مي گردد که داراي حجم اندکي بوده و يک لايه حداقل بين کد هاي نوشته شده و منبع داده را ايجاد نمايند . ( افزايش کارائي بدون قرباني نمودن پتانسيل ها).Net Framework دارای دو Data Provider است:
SQL Server .NET
OLE DB .NET

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

ADO.NET امکان ارتباط با بانک اطلاعاتی رابطه ای و سایر منابع داده ها را فراهم می کند .به عبارت دیگر ، ADO.NET فناوری است که برنامه های کاربردی ویژوال بیسیک نت ازآن برای ارتباط با بانک اطلاعاتی استفاده می کند.به این ترتیب این برنامه ها می توانند رکورد هایی را به بانک اطلاعاتی اضافه کنند،رکوردهایی را حذف یا ویرایش کنند. ADO.NET برای برنامه های کاربردی توزیعی (مثل برنامه های کاربردی وب) مفید است.

یکی از ویژگی های مهم ADO.NET این است که بی اتصال است.این ویژگی تفاوت اساسی آن با ADO است. در ADO ،برنامه های کاربردی به بانک اطلاعاتی وصل می شوند،یک Record Set ایجاد می کنند،و از اطلاعات آن برای پر کردن Data Grid یا محاسبات دیگر استفاده می کنند،سپس Record Set ، را ازبین برده اتصال را قطع می کنند.در حالی که اتصال باز است(اتصال با بانک اطلاعاتی برقرار است)،اتصال “زنده ای ” با بانک اطلاعاتی وجود دارد که می توانید آن را فوراً به هنگام سازی کنید و گاهی تغییرات حاصل ازکاربران دیگران را بلافاصله مشاهده کنید. در یک برنامه نه چندان خوب ،اتصال بانک اطلاعاتی ممکن است در حین انجام کارهای دیگر ،باز نگهداشته شود . معنایش این است که منابع مهمی در حال استفاده اند و در نتیجه از تعداد کاربرانی که می توانند به بانک اطلاعاتی دستیابی داشته باشند وازبرنامه های کاربردی ویژوال بیسیک نت استفاده کنند،کاسته می شود.

درADO.NET از استدلال کاملاً متفاوتی استفاده می کند. وقتی درADO.NET با بانک اطلاعاتی ارتباط برقرار می کنید ، اطلاعاتی که از بانک اطلاعاتی دریافت می کنید دریک Dataset قرار می گیرد اگر اطلاعات موجود در Dataset را تغییر دهید ، اطلاعات موجود در جدول متناظر با بانک اطلاعاتی تغییر نمی کند. معنایش این است که بدون نگرانی می توانید مقادیر موجود در Dataset را دستکاری کنید ،زیرا از اتصال زنده استفاده نمی شود .در صورت نیاز ، Dataset می تواند با منبع داده اصلی اتصال برقرار کند و تمام تغییرات را اعمال نماید.

ADO.NET مثل دیگر اجزای .NET Framework از مجموعه ای از آبجت ها تشکیل شده است که برای ارائه دادن عملکرد مورد نیاز،با هم ارتباط برقرار می کنند.متأسفانه،این امر می تواند یادگیری مدل آبجکت را دلسرد کننده کند_شما احساس می کنید که نیاز دارید همه ی آنها را یادبگیرید قبل از آنکه بتوانید یکی از آنها رادرک کنید. (شکل زیر توضیحی بر اجزای Framework است.)

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

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

استاندارد اتصال پایگاه داده باز:
ODBC = Open DataBase Connectivity

این استاندارد راهی برای ارتباط برنامه کاربردی با سرویس دهنده پایگاه داده فراهم می کند.ODBC واسط برنامه کاربردی API را تعریف می کند که برنامه کاربردی با استفاده از آن می تواند پایگاه داده را باز کند،تقاضاها یا بهنگام سازی ها را اجرا نماید،و نتایج را دریافت کند.
کاربردهایی مثل واسط های گرافیکی کاربر ، بسته های آماری و صفحات گسترده با استفاده از ODBC API می توانند به هر سرویس دهنده ی پایگاه داده ای که از ODBC پشتیبانی می کند،متصل شوند.

هر کدام از سیستم ها ی پایگاه داده که از ODBC پشتیبانی می کند،کتابخانه ای دارند که باید با برنامه مشتری پیوند داده شود. وقتی برنامه مشتری ODBC API را فراخوانی می کند ،کد موجود در کتابخانه با سرویس دهنده ارتباط برقرار می کند تا عمل درخواستی را انجام دهد و نتایج را دریافت نماید.
استاندارد های SQL ،واسط سطح تماس را تعریف می کند که مشابه با واسط ODBC است. APIهای ADO و ADO.NET جایگزین هایی برای ODBC هستند که برای زبانهایی مثل ویژوال بیسیک وC# طراحی شدند.

مدل آبجکتی ADO.NET
شکل زیر ،نمای ساده ای از آبجکت های اصلی مدل آبجکتی ADO.NET را نشان می دهد. البته،واقعیت کتابخانه کلاس ها، بسیار پیچیده تر است،ولی بعدأ در مورد جزئیات توضیح داده خواهد شد.حالا، فقط درک اینکه آبجکت های اولیه و اصلی کدامند و چگونه باهم ارتباط برقرار می کنند ، کافی است.
کلاسهای ADO.NET به دو عنصر (جزء) تقسیم شده اند :data Provider ها (که بعضی اوقات

Managed Provider نامیده می شود)و ارتباط با یک منبع داده فیزیکی را اداره می کنند و dataset که نشان دهنده داده های واقعی است. هر کدام از این عناصر (component) ،می توانند با مصرف کنندگان داده (data consumers) مثل web formها و winform ها ارتباط برقرار می کنند .

The ADO.NET Object Model

Data Provider ها:
عناصر data Provider،مخصوص یک منبع داده هستند. .NET Framework ،دارای دو
data provider است:

یک data provider (ارائه کننده)عمومی که می توانند با هر منبع داده OLE DB ارتباط برقرار کند و یک SQL Server Provider که برای Microsoft SQL Server نسخه های ۷ و بعد از آن ،بهینه شده است.انتظار می رود که Data Provider هایی برای پایگاه داده های دیگر، مثل Oracle،DB2 نیز موجود می باشند یا شما می توانید خودتان آنها را بنویسید .
دو Data Provider موجود در .NET Framework دارای آبجکت های مشابهی هستند ،اگر چه اسم و برخی از خصوصیات و متدها،متفاوتند.مثلأ آبجکت های SQL Server Provider با sql شروع می شوند (برای مثال sqlconnection )،در حالی که آبجکت های OLEDB با oledb شروع می شوند.
(برای مثال oledbconnection ).

• آبجکت Connection :این آبحکت نماینده اتصال فیزیکی به یک منبع داده است و خصوصیات آن،Data Provider (در مورد OLEDB Data Provider)،منبع داده و پایگاهی که به آن وصل خواهد شد و رشته ای که در طی اتصال از آن استفاده می کند،را تعیین می کنند. متد های آن نیز ، ساده اند:می توانید connection را باز کنید و ببینید،پایگاه داده را تغییر دهید و تراکنش ها را مدیریت کنید .

• آبجکت command :این آبجکت نماینده یک دستور SQL یا یک رویه ذخیره شده (stored procedure) است که باید در منبع داده، اجرا شود. آبجکت های command ، می توانند ایجاد شوند و به صورت مستقل در یک آبجکت connection اجرا شوند و توسط آبجکت های dataAdapter ، برای مدیریت ارتباطات از DataSet به منبع داده ، مورد استفاده قرار می گیرند. آبجکتهای command از دستورات SQL و روالهای ذخیره شده پشتیبانی می کنند که می توانند یک مقدار ، یک یا چند رکورد را برگردانند و یا اصلاً مقداری برنگردانند.

• آبجکت DataReader :این آبجکت ،یک آبجکت سریع و با سربار کم (low_overhead) برای بدست آوردن یک جریان فقط فرستادنی (forward_only) و فقط خواندنی از داده های یک منبع داده می باشد. این آبجکت هانمی توانندمستقیماً با کد ایجاد شوند و فقط با فراخوانی متد ExacuteReader آبجکت Command ایجاد می شوند.

• آبجکت DataAdapter:این آبجکت از نظر کارکرد ،پیچیده ترین آبجکت در یک Data Provider است و پل بین یک Connection و یک DataSet است .DataAdapter دارای چهار آبجکت Command استCommand: Updateو Command select و Command Insert و Command Delete .DataAdapter از Command select برای پر کردن یک DataSet استفاده می کند و سه آبجکت دیگر برای انتقال تغییرات مورد نیاز به منبع داده ، استفاده می کند.
(ADO) آبجکت های Microsoft Activex Data

از نظر کارکرد، آبجکت های connection ،و Command تقریباً معادل همتاهای ADO خود هستند (تفاوت های آنها در عدم
پشتیبانی از مکان نماهای (cursor) سمت سروراست)، در حالی که DataReader ،مثل یک مکان نمای firehose ،عمل می کند . DataAdapterو DataSet هچ معادلی در ADO ندارند.

اشیاء و متدهای ADO.NET :
ADO.NET دارای چند شیء مهم است.این اشیاء را می توان به دو دسته تقسیم کرد:
۱٫ آنهایی که برای نگهداری و مدیریت بر داده ها استفاده می شوند(مثل DataSet، DataTable ، DataRow ،DataRelation )
2. آنهایی که برای اتصال با منبع داده به کارمی روند (مثل DataReader،Connection ، Command ). توجه کنید که منظور از منبع داده ، جایی است که اطلاعات در آن نگهداری می شوند،به عنوان مثال ،بانک اطلاعاتی یک منبع داده است.
عناصر دسته دوم ADO.NET به دو گروه تقسیم می شوند :

I. گروه مربوط به نسخه استاندارد تأمین کننده OLEDB (مثل اکسس).
II. گروه مربوط به بانک اطلاعاتی SQL server منجر به افزایش کارایی می شوند

هر دو گروه تقریباً مثل هم عمل می کنند .تنها تفاوت این است که کلاسهایی که برای SQL server طراحی می شوند،از لایه OleDb عبور می کنند،و کارایی بهتری را ارائه می دهند. جدول۱_۱ مهمترین اشیاء و عملیات ADO.NET را نشان می دهد.در ادامه به شرح آن خواهیم پرداخت.

اولاً توجه کنید که اشیایی که با sql شروع می شوند،سرعت بالاتری دارند وفقط با SQL server میکروسافت کار می کنند .اشیاء OleDb با اکسس،اوراکل،وسایر بانکهای اطلاعاتی کار می کنند که برای آنها گرداننده های OleDb وجود دارد.یادآوری می شود که چون اشیاء OleDb نسبت به اشیاء sql از لایه های نرم افزاری بیشتری استفاده می کنند،سرعت اشیاء sql بیشتر است.

جدول ۱_۱:اشیاء و عملیات ADO.NET:
نام شیء
توصیف
SQL Server سایرسیستم مدیریت بانک اطلاعاتی

Sqlconnection OleDbconnection با مدیریت سیستم بانک اطلاعاتی اتصال برقرار می کند.
sqlcommand OleDbcommand دستورالعمل SQL را ذخیره و اجرا میکند.
sqlDataReader OleDbDataReader تقاضاهایی رااجراکرده،دستیابی فقط خواندنی به نتایج را فراهم می کند.

sqlDataAdapter OleDbDataAdapter داده های حاصل از تقاضا را بر می گردانند یا در بانک اطلاعاتی می نویسند.
Dataset حاوی یک یا چند Data Table است .
Data Table داده هارا به صورت سطر و ستون ذخیره می کنند
Data Relation بین دو Data Table ارتباط برقرار می کنند.
Data View نمایی از محتویات ذخیره شده یا فیلترشده Data Table را نشان می دهد.

شاید این پرسش مطرح شود که چرا شرکت مایکروسافت این کلاسها را برای دو دسته از بانک های اطلاعاتی تکرار کرده است. علتش این است که مایکروسافت با این کار توانست کلاسهای مربوط به بانک اطلاعاتی SQL Server را بهینه کند.البته می توانید برای ارتباط با بانک اطلاعاتی SQL Server از کلاسهای OleDb نیز استفاده کرد.اما از مزایای سهولت و سرعت کلاسهای مخصوص SQL Server محروم خواهید ماند.

توجه داشته باشید که کلاس connectionبرای برقراری اتصال با بانک اطلاعاتی ،کلاس command برای ذخیره و اجرای تقاضا(فرمانهای SQL )به کار می روند .اگر بخواهید اطلاعات را از بانک اطلاعاتی بخوانید و در صفحه نمایش ظاهر کنید (بدون هر گونه تغییراتی)،می توانید از شیء Data Reader استفاده کنید . البته ، این شی ء برای ساخت صفحات وب به وسیله ویژوال بیسیک نت مفید است؛زیرا اطلاعاتی که در اختیار کاربران قرار می گیرند ،قابل تغییر نیستند .

اما برای بازیابی اطلاعات در بانک اطلاعاتی،انجام تغییرات درآن وسپس نوشتن دربانک اطلاعاتی ،باید از کلاس Dataset ،Data Table ،Data Relation ،Data Adapter ،Data View استفاده کنند.

در واقع اطلاعاتی که از بانک اطلاعاتی بازیابی می شوند،در کلاس Dataset قرار می گیرند .
داده های موجود در Dataset را می توان نمایش یا تغییر داد و سپسدر بانک اطلاعاتی نوشت.

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

Dataset یک نمایش مقیم در حافظه از داده است که ساختار آن در شکل زیر نشان داده شده است. Datasetمی تواند،به عنوان یک پایگاه داده رابطه ای ساده شده که از جدول و روابط آنها تشکیل شده است،در نظر گرفته شود . باید بفهمیم که Dataset ، همیشه از منبع داده جداست.یعنی این آبجکت نمی داندداده ای که در خود دارد ،از کجا آمده است و در حقیقیت ،می تواند داده هایی را از چند منبع در خود داشته باشد.
هر Dataset می تواند مساوی یک یا چند Data Table باشد که هر Data Table نماینده یک جدول از بانک اطلاعاتی است. برای ایجاد ارتباط بین جدول ها از کلاس Data relation استفاده می شود.
Data View اطلاعات موجود در Data Table را نمایش می دهد.کلاس Data Adapter برای کار با Dataset ضروری است.این کلاس پلی بین Dataset و منبع داده (بانک اطلاعاتی)برقرار می کند.برای بازیابی اطلاعات از بانک اطلاعاتی و قرار دادن در Dataset و ثبت تغییرات در Dataset ،از کلاس Data Adapter استفاده می شود.

Dataset از دو آبجکت اصلی ،تشکیل شده است:
ataTableCollectionِِD و DataRelationCollection .
DataTableCollection:شامل هیچ یا چند آبجکت Data Table است که ،به نوبه خود از سه مجموعه تشکیل شده است: Columns ،Rows و Constrain .
DataRelationCollection: شامل هیچ یا چند Data Relation است.
DataTableCollection
مجموعه Columns آبجکت Data Table ،ستون هایی که Data Table را می سازند ، را تعریف
می کند . علاوه برخاصیت های Column Name و Data Type ، خاصیت هایData column به شما امکان می دهد تا مواردی مثل اینکه آیا امکان ایجاد ستون null (AllowDBNull) ، حد اکثر طول ستون (MaxLength) را می دهند یا خیر و حتی یک عبارت را که برای محاسبه مقدار آن بکار می رود (Expression) را می توانید تعریف کنید .
مجموعه Rows آبجکت Data Table ،که می تواند تهی (Empty) باشد ،شامل داده های واقعی است که بوسیله مجموعه Columns ،تعریف می شود . برای هر Row ، Data Table مقداراولیه ، فعلی و پیشنهاد شده را نگه می دارد.البته این قابلیت به میزان زیادی بعضی کارهای برنامه نویسی را آسان می کند.
ADO
ADO.NET Data Table همان کارکرد آبجکت Record set رادر ADO دارد،اگرچه مسلماً، نقش متفاوتی رادرمدل آبجکتی ،بازی می کند.

مجموعهConstraints آبجکتData Table ، شامل هیچ و یا تعدادی Constraints است.
Constraint ها، درست مثلConstraint های پایگاه داده رابطه ای ، برای حفظ جامعیت داده ها به کار می رود.ADO.NET از دو نوع Constraint (محدودیت) پشتسبانی می کند:
Constraint Foreign key که جامعیت رابطه ای را حفظ می کنند(یعنی تضمین می کند هر سطرفرزند نمی تواند بدون پدر باشد )و Constraint Unique جامعیت داده ها را حفظ می کنند(یعنی تضمین می کند سطرتکراری در جدول اضافه نشوند.). بعلاوه ،خاصیت primary Key سرانجام Data Table جامعیت موجودیت (entity) را تضمین می کند (یعنی یکتا بودن هر سطر را تضمین می کند.).

DataRelationCollection
سرانجام اینکه ، DataRelationCollection آبجکت Dataset شامل هیچ یا چند Data Relation
است. Data Relation ها،یک واسط برنامه ای ساده برای از یک سطر اصلی در یک جدول به سطر _های مربوطه در جدول دیگر را ارائه می کنند. برای مثال ،با داشتن Order (سفارش ها) ، Data Relation به شما امکان می دهد تا به سادگی سطر های مربوطه را در جدول Order Details (جزئیات سفارش ها)بدست آورید .(توجه داشته باشید که خود Data Relation ،جامعیت رابطه ای را تضمین نمی کند و برای این کار ،یک Constraint به کار می رود.).

ارتباط داده ها به یک فرم ساده ویندوزی
روند متصل داده ها به یک فرم ،data binding(مربوط کردن داده ها)نامیده می شود.این کار می تواند با کد و برنامه نویسی صورت گیرد ،ولی Microsoft Visual Stadio.NET ،این کار را بسیار ساده کرده است . در این فصل، از بخش طراحی (designer) و ویزاردها برای ایجاد سریع یک فرم ساده ویندوزی مرتبط به داده ،استفاده خواهیم کرد.

مهم
اگر تاکنون ، برنامه Microsoft Visual Stadio.NET را نصب نکرده اید به یک reference مراجعه کنید.

اضافه کردن یک Connection و Data Adapter
اولین قدم در مرتب کردن داده ها،ایجاد آبجکت های Data Provider است. Visual Studioیک ویزارد Data Adapter Configuration برای ساده کردن این کار دارد .وقتی که Data Provider اضافه شد می توانیدبا استفاده از پنجره Data Adapter preview برنامه Visual Studio،بررسی کنید که آیا تنظیمات آن درست است یا خیر.
اضافه کردن یک connection به یک فرم
۱_پروژه Windows Application1را از صفحه شروع Visual Studio،باز کنید.
۲_رویform2.VB درSolution Explorer دو بار کلیک کنید تا فرم باز شود.
Visual Studio ،فرم را در بخش form designer ،نشان می دهد.

۳_یک آبجکتOLEDBDataAdapter،را از برگه Data جعبه ابزار (Toolbox) به روی فرم بکشید. Visual Studio،اولین صفحه ویزارد Data Adapter Configurationرا نشان می دهد.

۴_روی Next کلیک کنید.
ویزارد Data Adapter Configuration یک صفحه را به شما نشان می دهد و از شما می خواهد که یک Connection را انتخاب کنید.

۵_روی دکمه new connection کلیک کنید. کادر محاوره ای Data Link Properties باز می شود.

۶_از برگه provider برای پایگاه داده Access گزینه Jet4.0… را انتخاب کرده و Next را زده .

۷_سپس دکمه ای را که دور آن یک خط کشیده شده است را کلیک می کنیم و فایل Access ذخیره شده را پیدا می کنیم.وOK را زده و اسم سرور و اطلاعات مناسب مربوط به logon را انتخاب کنید،(برای SQL )_ پایگاه داده north wind را انتخاب کنید و بعد بر روی Test Connection کلیک کنید.

ویزارد Data Adapter Configuration ،پیغامی را به شما نشان می دهد و می گوید که اتصال موفقیت آمیز بوده است.

۸_روی دکمه okکلیک کرده تا پیغام بسته شود ،بعد روی دکمهok کلیک کنید تا کادر محاوره Data Link Properties بسته شود،بعد روی دکمه next کلیک کنید تا صفحه بعدی ویزارد را نشان دهد.
ویزارد ،یک صفحه را به شما نشان می دهد و از شما می خواهد تا یک نوع از پرس و جو (query) را انتخاب کنید.

۹_بررسی کنید که گزینه Use SQL statement انتخاب شده باشد و بعد روی دکمه Next کلیک نمایید ویزارد ،با نشان دادن یک صفحه،از شما می خواهد تا دستورهای SQL ی که باید مورد استفاده قرار گیرند را مشخص نمایید .

۱۰_رو یQuery Builder ، کلیک کنید.ویزارد Data Adapter Configuration ،Query Builderرا باز می کند و کادر محاوره ی Add Table را نشان می دهد.در صورتی که بیش از یک جدول داشته باشید همه جداول را نشان می دهد.

۱۱_جدول sttable را انتخاب کنید،برروی دکمه Addکلیک کنید وبعد برروی دکمه close کلیک کنید.
کادر محاوره Add Table بسته می شود و جدول sttable به Query Builder اضافه می شود.
۱۲_فیلد ها را با علامت زدن کادر انتخاب کنار اسم فیلد درکادر بالا ،انتخاب کنید:
Query Builder ،دستور SQL ایجاد می کند.

۱۳_روی دکمه Ok کلیک کنید تا Query Builder بسته شود ،وبعد روی دکمه Next کلیک کنید.
ویزارد یک صفحه را به شما نشان می دهد و نتایج اضافه کردن آبجکت ها ی Connection ، Data Adapter را به فرم ، نشان می دهد.

۱۴_روی دکمه Finish کلیک کنید تا ویزارد بسته شود. ویزارد Data Adapter Configuration ،یک OledbDataAdapter و Oledbconnection را ایجاد و تنظیم می کند و بعد آنها را به Component Designerاضافه می کند.

ایجاد Dataset ها:
آبجکت های Connection وData Adapter ،ارتباط فیزیکی با منبع داده ها (data store) را مدیریت می کنند ، ولی همچنین باید یک نمایش مقیم درحافظه از داده های واقعی که باید به فرم مرتبط شوند ،را ایجاد کنید .
شما می توانید یک کنترل را تقریباً به هر ساختاری که شامل داده می باشد ،از جمله آرایه ها و مجموعه _ها مرتبط کنید ،ولی معمولاً از یک Dataset استفاده می کنید .
Visual Studio ،برای آبجکت های Data Provider ، مکانیزمی برای اتوماتیک کردن این روند فراهم می کند. در حقیقت ،این کار می تواند با انتخاب یک منو انجام شود،اگر چه از آنجایی که Visual Studio ، کدی را ایجاد می کند را نشان می دهد ،می توانید کارکرد اساسی Dataset ی را که Visual Studio فراهم می کند،تغییر دهید.

یک Dataset بسازیم
۱_ از منوی Data ، گزینه Generate Dataset را انتخاب می کنید.

۲_کادر محاوره Generate Dataset باز می شود.

اگر چنانچه خواستید Dataset را تغییر نام بدهید در کادر New کلیک کنید و نام را تایپ کنید.سپس بر روی دکمه OK کلیک کنید . Visual Studioکلاس Dataset را ایجاد می کند و یک نمونه از آن را به کادر پایینی forms designer اضافه می کند.

مرتبط کردن ساده کنترل ها به یک Dataset
.net framework از دو نوع از مرتبط کردن (binding) پشتیبانی می کند:ساده و پیچیده .مرتبط کردن ساده (simple binding) ، وقتی اتفاق می افتد که یک عنصر داده (data element) ، مثل یک تاریخ که فقط به یک کنترل مرتبط می شوند .مرتبط کردن پیچیده (Complex binding) ، وقتی رخ می دهد که یک کنترل به چند مقدار داده ای مرتبط شود.مثلاً یک List box به یک Dataset مربوط
می شود که شامل لیستی از Order Number (شماره سفارش ها )می باشد .
تقریباً هر خاصیت کنترل می تواند از مرتبط کردن ساده پشتیبانی کند ، ولی فقط یک زیرمجموعه ای از کنترل ها ی ویندوز و web form (مثل Data grid ، List box ) می توانند از مرتبط کردن پیچیده پشتیبانی کنند.

Data provider ها
فصل دوم
ایجاد connection ها
آنچه در این فصل ارائه خواهد شد:
۩ اضافه کردن یک نمونه از Server Explorer Connection به یک فرم
۩ ایجاد یک Connection با استفاده از کد (برنامه)
۩ استفاده از خاصیت های Connection
۩ استفاده از یک متغیر واسطه برای ارجاع به چند نوع Connection
۩ مرتبط کردن خاصیت های Connection به کنترل های فرم
۩ باز کردن و بستن Connection
مفهوم Connection:

Connection ها، مسئول مدیریت ارتباط فیزیکی بین یک مخزن داده (data store) و یک برنامه .NET هستند .از آنجایی که آبجکت connection ،بخشی از یک data providerاست،هر data provider نسخه خاص خود را پیاده سازی می کند. دو data provider پشتیبانی شده توسط .NET Framework و oledbconnection را در فضای اسمی((namespace( system.Data.oledb و sqlconnection در فضای اسمی namespace) system.Data.sqlclient پیاده سازی می کند.

نکته: باید درک کرد که اگر از آبجکت Connection استفاده می کنید که بوسیله یک data provider دیگر پیاده سازی شده باشد ، جزئیات پیاده سازی ممکن است با آنچه که در اینجا آمده است ،فرق کند.

جای تعجب نیست که oledbconnection ازoledb استفاده می کند و می تواند با هر provider oledb ، از جمله Microsoft SQL Server مورد استفاده قرار می گیرد . sqlconnection مستقیماً و بدون گذشتن از طریق provider oledb ،به SQL Server می رود و بنابراین کارآمدتر است.

Microsoft Activex Data Object (ADO)
از آنجایی که ADO.NET ،مدل آبجکتی ADO را با oledb ادغام می کند، برای ملاحظات مربوط به کارایی بسیاربه ندرت پیش می آید که لازم باشد مستقیماً به oledb رفت . البته ،اگر نیاز به کارکردهای خاصی داشته باشید که توسط ADO.NET ارائه نشده باشد ،ممکن است مجبور شوید که مستقیماً از OLEDB استفاده کنید.ولی وقتی که از ADO استفاده می کنیم، این شرایط به ندرت پیش می آیند.

ایجاد Connection ها:
در فصل قبل ،با استفاده از ویزارد Data Adapter Configuration ، یک آبجکت Connection را ایجاد کردیم.ویزارد Data Form که با کلیک کردن گزینه Add Windows Form… از منوی Project ، قابل دسترس است، نیز به صورت اتوماتیک یک Connection ایجاد می کند . دراین فصل ، به روش های دیگری برای ایجاد Connection در Visual studio.Net ،نگاهی می اندازیم.

 

Connectionهای زمان طراحی:
Server Explorer در Visual studio ، این قابلیت را دارد که در زمان طراحی ،اتصالهایی را به تعدادی از سرویس های سیستم ،از جمله فایل های ثبت وقایع ،صف های پیغام و مهمتر از همه برای اهداف ما ، اتصالات داده ای (Data Connection) ،مشاهده و نگهداری کنیم.

اضافه کردن یک Connection در زمان اجرا به Server Explorer
1_پروژه Connection را از صفحه شروع Visual studio و یا از منوی Project ،انتخاب کنید.
۲_در Solution Explorer بر روی ConnectionProperties.vb ،دو بار کلیک کنید تا فرم باز شود. Visual studio،فرم را در پنجره طراحی فرم (form designer) نشان می دهد.
۳_Server Explorer را باز کنید .
۴_روی دکمه Connection to Database کلیک کنید.

تذکر : شما می توانید با انتخاب Connection to Database از منوی Tools ، پنجره Data Link Properties راباز کنید.
در تصویر صفحه بعد دیده می شود.

روی دکمه Connection to Database کلیک کنید . Visual studio، پنجره را نشان می دهد.

۵_روی برگه Provider کلیک کرده و Microsoft jet 4.5 OLEDB provider را انتخاب کنید .
۶_روی دکمه Next کلیک کنید. Visual Studio ،برگه Connection را انتخاب خواهد شد .
۷_روی دکمه (…) بعد از قسمت Select or enter a database name کلیک کنید ، به پوشه ای که حاوی فایل های نمونه است بروید و بعد پایگاه داده نمونه sttable2 را انتخاب کنید .
۸_روی دکمه Open کلیک کنید . Visual studio ،یک رشته Connection (Connection string) برای پایگاه داده می سازد
۹_روی دکمه OK کلیک کنید . Visual studio ، Connection را به Server Explorer اضافه می کند

۱۰_ روی دکمه connection در Server explorer کلیک راست کنید،گزینه Rename را از منوی حاصله انتخاب کنید وبعد اسم Connection را به نام دلخواه(مثلاًAccess sttable2 ) تغییر دهید.

ارجاعات پایگاه داده (Database References)
علاوه بر Database Connectionها در Server Explorer ، Visual studio از Database References نیز پشتیبانی می کند .Database Referencesها به عنوان بخشی از یک Database project تنظیم می شوند.این پروژه ها ،نوع خاصی از پروژه ها هستند که برای ذخیره سازی اسکریپت های SQL ،Data command ها و Data connectionها به کار می روند.
Database References (به جای اینکه در Server Explorer ایجاد شوند) در Solution Explorer ایجاد می شوند و بر خلاف Database Connection ها که در Server Explorer تعریف می شوند ،به همراه پروژه ذخیره می شوند. Data connectionهایی که از طریق Server Explorer تعریف می شوند بخشی از محیط visual studio شما می شوند _و وقتی که پروژه ها را باز و بسته می کنید ،آنها پایدار می مانند .از طرف دیگر Database References به عنوان بخشی از یک پروژه خاص ، وجود دارند و فقط به عنوان بخشی از پروژه قابل دسترسی هستند .
Connection ها در زمان طراحی ،به صورت اتوماتیک درهر پروژه ،قرار نمی گیرند ولی شما می توانید یک Connection زمان طراحی را از Server Explorer به یک فرم بکشید ،تا visual studio یک آبجکت Connection ازپیش فرض شده را برای شما ایجاد کند.

اضافه کرد ن یک نمونه از Connection زمان طراحی به یک فرم
Access sttable2 connection رادر Server Explorer انتخاب کنید و آن را برروی یک فرم بکشید. Visual studio ، یک OleDbConnection از پیش تنظیم شده را به Component Designer اضافه می کند.(نکته بسیار مهم :اگر ازOleDbDataAdapter استفاده کنید خود یک OleDbConnection را می سازد.)

ایجاد Connection در زمان اجرا
استفاده از visual studio برای ایجاد connection های فرمی ،ساده ترین روش است ،ولی اگر لازم باشد که یک connection ایجاد کنید که به هیچ فرمی مربوط نباشد،می توانید آن را در زمان اجرابا برنامه نویسی ایجاد کنید .
نکته :معمولاً یک آبجکت Connection فرمی را با برنامه نویسی ایجاد نمی کند ، زیرا designers، های Visual Studio ، ساده تر و کارآمدتر است .
آبجکت connection ، دو نسخه Overload شده از سازنده (Constructor) خود را دارد که به شما امکان می دهد تا connection string را به داخل عبور دهید (طبق جدول۱_۲)
جدول ۱_۲: سازنده های Connection
متد توصیف
New () یک connection رابا خاصیت connection string مساوی با رشته تهی ایجاد می کند.
New (connection string) آبجکت Connection از connection string استفاده می کند تا به منبع داده ها وصل شود.

ایجاد یک Connection با برنامه نویسی
۱_با فشردن بر روی کلید F7 ، کد مربوط به فرم connection Properties را نمایش دهید.
۲_خطوطی را بعد از دستور inherits،اضافه کنید:Dim con As OleDbConnection