# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > دسترسی به داده ها (ADO.Net و LINQ و ...) >  آموزش ADO .NET  در سی شارپ

## danial82

با اجازه پیشکسوتهای فروم تو این تاپیک میخوام قدم به قدم ADO .NET  در سی شارپ از رو کتاب C#‎ Programmer's Handbook  بگم

از مفاهیم پایه در  ADO .NET شروع میکنیم :

برای استفاده از یک database دو را وجود دارد: connected , disconnected

برای روش connected از کلاسهای XXXConnection و XXXCommand و XXXDataReader  باید استفاده کرد.

برای حالت disconnected از کلاس  XXXDataAdapter  باید استفاده کرد در این حالت از سه کلاس گفته شده در روش connected  به همراه آبجکت DataSet  نیز میتوان استفاده کرد . (منظور از XXX  ، sql , oldbمیباشد)
ADO.NET  دارای دو آبجکت پایه است : 
DataTable : یک شی است که در داخل خود شامل سطر و ستون است دقیقا مثل جدول

DataSet : یک شی است که  میتواند مجموعه از  دادههای مبدا را در خود نگهداری کند این شی در ADO بنام recordset شناخته میشود . یک DataSet  از  DataTable  مختلف درست شده است و میتواند جداول متعددی از  database مبداء را در خود نگه دارد.Data provider های متفاوت اجازه دسترسی به database های مخصوص به خود را میدهند. Data provider ها دارای کلاسهای پایه ای هستند که توسط آنها میتوان به داده ها دسترسی داشت.

کلاسهای اصلی برای دسترسی به  database


Connection -1 
از این کلاس برای اتصال به database استفاده میشود

Command -2 
از این کلاس برای اجرای دستورات بر روی داده ها استفاده میشود این کلاس دارای متدهای متعددی از جمله   ExecuteScalar ، ExecuteNonQuery ، ExecuteReader برای اجرای دستورات میباشد .

DataReader -3 
 از این کلاس تنها برای خواندن داده ها استفاده میشود .

DataAdapter 
-4 از این کلاس برای پر کردن یا update یک data set بکار میرود . این کلاس یک پل بین data set و data source برقرار میکنه

----------


## مطهر

برا شروع خوبه ممون



> از مفاهیم پایه در ADO .NET شروع میکنیم :


امیدارم  مباحث پیشرفته هم مطرح شود
موفق باشید

----------


## amir_3530

اگر آموزش کامل باشه خیلی خوبه

----------


## danial82

لطفا غیبت چند روزه منو ببخشید 
اگر از درس امروز یه مقدار گیج شدید نترسید و مطالب رو دنبال کنید به زودی کاربرد هر کدوم رو تو مثال باهم  خواهیم دید امروز میخوام کلاسهای رایج در System.Data  رو توضیح بدم

1-Constraint 
این کلاس برای نشان دادن محدویتهای بکار رفته در یک شی  DataColumn  بکار میرود

ConstraintCollection -2
 این کلاس همانطور که از اسمش پیدا است مجموعه ای از  Constraint ها میباشد

DataColumn -3
 این کلاس یک الگو یا طرح یا shema از ستونهای شی   DataTable میباشد

DataColumnCollection -4
 این کلاس همانطور که از اسمش پیدا است مجموعه ای از  DataColumn ها  میباشد

DataRelation -5
این کلاس برای نشان دادن یک رابطه  parent-child بین دو جدول بکار میرود

DataRelationCollection -6 
این کلاس همانطور که از اسمش پیدا است مجموعه ای از  DataRelation  ها  میباشد

DataRow -7 
این کلاس برای نشان دادن یک سطر از  داده های  درون یک جدول بکار میرود


DataRowCollection -8 
 این کلاس همانطور که از اسمش پیدا است مجموعه ای از  DataRow ها  میباشد

DataRowView -9 
این کلاس شامل خواص مختلفی برای دیدن داده های درون  DataRow میباشد

DataSet -10 
این کلاس یکی از اصلی ترین کلاسها در ADO .NET میباشد این کلاس برای نشان دادن یک یا چند  جدولی که از منبع داده ها در حافظه لود کردیم بکار میرود

DataTable -11 
این کلاس یکی دیگر از اصلی ترین کلاسها در ADO .NET میباشد این کلاس برای نشان دادن جداولی است که از منبع داده ها در حافظه لود کردیم بکار میرود

DataView-12 
 با این کلاس میتوان یک نما دلخواه از  DataTable  را داشته باشیم منظور از نمای دلخواه sorting, filtering, searching, editing  میباشد

DataViewManager -13 
این کلاس شامل نماهای پیش فرض  برای شی DataTable  میباشد


مطهر عزیز اگه لطف بگی منظورت از مباحث پیشرفته چیه ممنون میشم  تا اگه تونستم اونها رو هم توضیح بدم
amir_3530 جان من تمام سعی خودمو میکنم تا بتوانم یه آموزش کامل ارایه بدم  :چشمک:

----------


## danial82

از این قسمت به بعد ، با مثال کاربرد کلاسهای گفته شده رو با هم ببینیم 

*ایجاد اتصال به یک Database*

اولین کار برای استفاده از یک Database اتصال به آن است برای اتصال به یک Database همانطور که قبلا گفته شد از کلاس  SqlConnection استفاده میشود . کلاس  SqlConnection پراپرتی بنام  ConnectionString دارد که string ی است که توسط آن کلاسSqlConnection  متوجه میشود به چه Databaseی باید متصل شود آیا Database مقصد پسورد دارد ؟ .... و از این قبیل اطلاعات .در مثال زیر یک SqlConnection ایجاد شده سپس با متد open() اتصال ایجاد شده برای استفاده باز میگردد

using System;

using System.Data.SqlClient;

namespace Client.Chapter_13___ADO.NET
{
          class CreatingSQLConnections
          {
                static void Main(string[] args)
                {
                       SqlConnection MyConnection =
                          new SqlConnection("Data Source=(local);"
                          + "Initial Catalog" + "MyDatabase;"
                          + "User ID=sa;Password=");

                       //Creates and opens a connection to the database

                       MyConnection.Open();
                }
          }
}


البته برای open کردن یک connection روش بهتر استفاده از کد زیر استtry
			{
				
				if (MyConnection.State != ConnectionState.Open)
					MyConnection.Open();
				
			}

			catch (Exception ex)
			{
				MessageBox.Show( ex.Message);
				
			}

----------


## مطهر

عالیه
به نظراین حقیر بیشتر تمرکز را بر روی Disconnected DataBase بزار . کار با دیتاست ، و مدل Disconnect
این سوال این بیسواد را هم جواب بده لطفاً
http://www.barnamenevis.org/sh...ad.php?t=33716
موفق باشید

----------


## mahdishojaee

خیلی ممنون از زحمتت.استفاده کردیم

----------


## benyamin_pc

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

----------


## benighted.boy

با سلام. 
ممنون از زحماتی که کشیدین.
من هم با نظر دوستمون benyamin_pc موافقم اگر تاپیک قفل بشه و دوستان فقط نظاره گر باشن خیلی بهتره .از طرفی هم فکر میکنم بحث حول محور Disconnect بگرده خالبتر باشه .چون در مورد Connect بحث زیاد شده . یه پیشنهاد کوچیکم داشتم .اگر برای شما زحمتی نیست جای پستهای متفاوت کلیه مطالب در یک فایل pdf نوشته و upload کنید .(البته اگر امکان این کار برای شما فراهم باشد)

----------


## Bahar_HS

با سلام
 بحثی رو که شروع کردید ، ادامه نمی دید؟؟

----------


## benyamin_pc

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

----------


## mahdihp.devs

با تشکر از آموزش شما .لطفا مثالها را حرفه ای تر و کاربردی تر ارائه کنید.  :قلب:

----------


## mahdihp.devs

لطفا آموزش LINQ هم بگذارید. :بوس:  :قلب:

----------


## danial82

میدونم که خیلی وقته از شروع این تاپیک میگذره و خیلی ها از ادامه این تاپیک نا امید شدن البته حق هم دارن
داشتم تو لیست تاپیکهای زده شده توسط خودم میگشتم رسیدم به این تاپیک و دیدم دوستان چقدر مشتاق هستند این بود خواستم تاپیک و دوباره فعال کنم
با عرض معذرت از دوستان بخاطر تاخیر طولانی

----------


## mostafa_shoakry

بچه ها کی Link آموزشی Microsoft Ado.net Tutorials رو داره ترجیحا LyndaیاTotal Trainingباشه بهتره.Linkها Rapidshare,Megaupload,Filefactoryو... می تونه باشه.البته زبان اصلیشون.من هر چه قدر گشتم نتونستم پیدا کنم .اونایی رو که پیدا کردم همه فایلارو در اختیارم قرار نمی دادند یا به عبارت ساده تر پولی بودند.

----------


## danial82

> بچه ها کی Link آموزشی Microsoft Ado.net Tutorials رو داره ترجیحا LyndaیاTotal Trainingباشه بهتره.Linkها Rapidshare,Megaupload,Filefactoryو... می تونه باشه.البته زبان اصلیشون.من هر چه قدر گشتم نتونستم پیدا کنم .اونایی رو که پیدا کردم همه فایلارو در اختیارم قرار نمی دادند یا به عبارت ساده تر پولی بودند.


Total Training رو تو وبلاگ(امضا) من میتوانی پیدا کنی

----------


## ghasem110deh

آموزش تموم شده ؟
یا ...

----------


## b61_zeus

خیلی ممنون بابت آموزش

----------


## jokerhp

سلام ببخشی میخوام بدونم من باید بانکمو کجا سیو کنم و مسیر کانکشین استرینگو چی بدم که برای کامپیوتر های دیگه هم کار کنه

----------


## daniyaltjm

سلام این تایپیک ادامه نمی یابد؟! یا تایپیک جدیدی ساخته شده؟

----------

