PDA

View Full Version : انواع ارتباط با دیتابیس از نظر سرعت ، امنیت ، راحتی در کدنویسی و ...



modern_amin
پنج شنبه 18 اسفند 1390, 08:20 صبح
باسلام
سوالم از شما دوستان این هست تو سی شارپ سریعترین روش یا فناوری بهمراه + کم خطاترین روش ممکن برای اتصال به بانک ، گزارشگیری ها و انجام عملیات اصلی رو بانک داده ها در حجم بالای داده ها کدام روش میباشد؟؟
من قبلا با commandtext و linq کار کردم، میدونم همشون سریع هستند ولی میخام هم سریعترین باشه ، هم کم خطاترین و هم مقداری کار با اون ساده و راحت باشه ....

xcomlock
پنج شنبه 18 اسفند 1390, 10:58 صبح
Entity Framework (آخرین تکنولوژی ماکروسافت در زمینه ارتباط با بانک اطلاعاتی )
http://irmeta.com/meta/index.php?topic=6232.0

modern_amin
پنج شنبه 18 اسفند 1390, 11:10 صبح
ado.net ؟
.
مزیتش چیه؟
سمپل دارید؟

xcomlock
پنج شنبه 18 اسفند 1390, 11:15 صبح
ado.net ؟
.
مزیتش چیه؟
سمپل دارید؟

مدل ساخت یافته ای از ADO.NET هستش.
توی سایت که الان آدرسشو خاطرم نیست ADO.NET , Linq , Entity Framework رو مقایسه کرده بودن و به نتایج جالبی رسیده بودن . یه جستجو کنی کلی نمونه کد و سمپل پیدا میکنی.

m.bibjan
جمعه 19 اسفند 1390, 23:19 عصر
سلام میخواستم ببینم دستور استاندارد سی شارپ برای اتصال به sql چی هستش؟
یه مبتدی مثل من وقتی سرچ میکنه با خیل کدها روبرو میشه.اخرشم گیچ میشه که کدومش استاندارده.البته شاید هم همش استاندارد باشه و شاید هم نه.
اگه کسی راهنمایی کنه که نمونه کد استاندارد چیه ممنون میشم.البته با کمی توضیح که دلیلش رو هم بدونم.

mehdi zanjani
جمعه 19 اسفند 1390, 23:40 عصر
1 سر به اینجا (http://www.connectionstring.com)بزن !

m.bibjan
شنبه 20 اسفند 1390, 00:22 صبح
سلام ممنون
چیزی دستگیرم نشد از این سایت.
اخه توی همین بخش سی شارپ توی تاپیک نمونه برنامه ها واسه ارتباط با sql چندین نوع راه و روش وجود داره.میخواستم ببینم کدوم راه و کدها استانداردتره.

rana-writes
شنبه 20 اسفند 1390, 00:27 صبح
سلام
براي كانكشن من از اين روش استفاده ميكنم كه ديدم توي دو تا پروژه بزرگ كه وابسته به جاهاي مهم بودن استفاده شده
اول يه كلاس ميسازم به اسم مثلا Connection
بعد توش اين تابع رو مي نويسم:


public static SqlConnection ConnectToFix()
{

string ConnectioString = "Data Source="+ System.Net.Dns.GetHostName()+";Initial Catalog=Fix;Integrated Security=True; Min Pool Size = 20";
SqlConnection connection = new SqlConnection(ConnectioString );

try
{
connection.Open();
}
catch (SqlException)
{
connection.Close();
}
return connection;


}


موقع استفاده هم هر جايي كه بخوام اينطوري فراخواني ميكنم:

SqlConnection connection = Connection.ConnectToFix();


موفق باشين

mehdi zanjani
شنبه 20 اسفند 1390, 00:30 صبح
تکنولوژی های زیادی واسه ارتباط با دیتابیس هست LinQ ، ADO.Net و Entity FrameWork که جدیدا ازش استفاده میشه هر کدوم از این تکنولوزی ها هم روش های زیادی واسه ارتباط با دیتابیس دارن اون دیگه مونده به دست خط برنامه نویس که چجور بنویسه نمیشه گفت کدوم دقیقا استاندارد تره برای مثال تو این لینک (http://csharpdotnet.blogsky.com/1390/05/03/post-233/)ADO.Net توضیح داده شده.

m.bibjan
شنبه 20 اسفند 1390, 00:55 صبح
ممنون از پاسخ هاتون.
ببخشید چرا نمیشه گفت دقیقا کدوم استانداردتره؟
و اینکه از کانکشن بالا چون در پروژه های بزرگ استفاده شده دلیل بر استاندارد بودنشونه؟
این دو سوال فقط جنبه سوالی داره ، نه ، جنبه انکاری؟

mehdi zanjani
شنبه 20 اسفند 1390, 01:10 صبح
مثلا LinQ خیلی ساده تر و بهتر از ADO.Net ولی با Multi Threading مشکل داره! هرکدوم محسنات و معایبی دارن واسه پروژه های بزرگ اصلا LinQ توصیه نمیشه به همون علتی که گفتم در عوض Ado.Net پیچیده تره ولی همیشه جواب میده بهتره که برنامه نویس سوای استاندارد بودن یا نبودن، ساده بودن یا نبودن همه ی این تکنولوژی هارو بلد باشه!!

m.bibjan
شنبه 20 اسفند 1390, 01:42 صبح
ممنون
شما فرض رو بردین روی حالتی که طرف متوسط رو به بالا هستش.ولی من نوعی مبتدی هستم و وقتی با این همه تکنولوژی روبرو میشم ، طبیعی هستش که اولا گیج بشمو ثانیا نفهمم چه خبره.پس عقل حکم میکنه که در ابتدا راه استاندارد رو پیش بگیرم بعد برسه به تکنولوژی های دیگه.
حالا شما این نوع کد توی لینکی که داده بودین میگین که استاندارده؟

m.bibjan
شنبه 20 اسفند 1390, 01:43 صبح
ممنون
شما فرض رو بردین روی حالتی که طرف متوسط رو به بالا هستش.ولی من نوعی مبتدی هستم و وقتی با این همه تکنولوژی روبرو میشم ، طبیعی هستش که اولا گیج بشمو ثانیا نفهمم چه خبره.پس عقل حکم میکنه که در ابتدا راه استاندارد رو پیش بگیرم بعد برسه به تکنولوژی های دیگه.
حالا شما این نوع کد توی لینکی که داده بودین میگین که استاندارده؟

mehdi zanjani
شنبه 20 اسفند 1390, 01:56 صبح
بله شما میتونی از اون طریق شروع کنی!!

اینم ی pdf خوب که از 0 توضیح داده همه چیو!

majid_i68
شنبه 20 اسفند 1390, 02:00 صبح
برای استفاده از این کلاس ها باید فضای نام زیر را با استفاده از using به برنامه اضافه کرد .
System.Data.SqlClient ;

1- کلاس SqlConnection :

این کلاس وظیفه برقراری ارتباط بین برنامه و بانک اطلاعاتی را بر عهده دارد .
- هنگامی که می خواهید یک نمونه از ان کلاس را ایجاد کنید باید پارامتری را به نام Connection String به آن ارسال کنید .
Connection String رشته ای است که شامل تمام داده های مورد نیاز برای برقراری اتصال به یک بانک اطلاعاتی می شود .
ویژوال استودیو با استفاده از ویزارد AddConnection و اطلاعاتی که کاربر وارد می کند چنین رشته ای را ایجاد کرده و در اختیار SqlConnection قرار می دهد .
اغلب بهتر است که متن لازم برای ConnectionString را خودمان بنویسیم که به صورت زیر است :



“Data Source = local;Initial Catalog = university;Integrated Security = True”

در کد بالا: local نام سروری است که بانک بر روی آن قرار دارد که در اینجا چون سرور خود کامپیوتر ماست مقدار آن را local قرار داده ایم که می توانیم به جای آن از “.” (نقطه) هم استفاده کنیم .
University نام بانکی است که قرار است ما با اطلاعات آن کار کنیم .
-متن ConnectionString به صورت پارامتر به شیئ جدید SqlConnection فرستاده می شود به صورت زیر:




SqlConnection Con = New SqlConnection( “Data Source = local;Initial Catalog = university;Integrated Security = True”);
در کد بالا : Con یک نمونه جدید از نوع SqlConnection است که برای استفاده از آن آن را ساخته ایم .
متصل و قطع کردن اتصال به یک بانک اطلاعاتی :
با استفاده از متدهای Open و Close در کلاس SqlConnection به بانک متصل شده و یا اتصال خود را قطع کنیم .




Con.Open(); و Con.Close();


2- کلاس SqlCommand :
این کلاس حاوی یک دستور Sql برای اجرا بر روی داده های دریافت شده از بانک اطلاعاتی است این دستور می تواند یک دستور SELECT برای انتخاب داده هایی خاص ، یک دستور INSERT برای درج داده های جدید در بانک اطلاعاتی ، یک دستور DELETE برای حذف داده ها از بانک اطلاعات و یا حتی فراخوانی یک پروسیجر ذخیره شده در بانک اطلاعاتی می باشد .
ایجاد آن به صورت زیر می باشد :


SqlCommand Cmd = New SqlCommand();


نکته – در برنامه های بانک اطلاعاتی معمولا از اشیای ایجاد شده از کلاس SqlCommand به تنهایی استفاده نمی کنند بلکه آنها را همراه با DataSet ها و DataAdapter ها به کار می برند .
همچنین اشیای SqlCommand می توانند به همراه اشیای ایجاد شده از کلاس DataReader مورد استفاده قرار گیرند .
خاصیت connection کلاس SqlCommand :
قبل از اینکه بتوانیم از یک شئ از کلاس SqlCommand استفاده کنیم باید بعضی از خاصیت های آن را تنظیم کنیم اولین خاصیتی که باید تنظیم شود خاصیت Conection است .
این خاصیت می تواند یک مقدار از نوع SqlConnection را دریافت کند :


Cmd .Connection = Con ;

توضیح کد بالا :
Cmd همان شیئی است که از کلاس SqlCommandقبلا ساخته ایم .
Con شیئی است که از نوع SqlConnection قبلا ساخته ایم .
خاصیت CommandText کلاس SqlCommand :
خاصیتبعدی که باید از کلاس SqlCommand تنظیم شود خاصیت CommandText است .
این خاصیت متنی را دریافت می کند که می تواند حاوی یک دستور Sql و یا فراخوانی یک پروسیجر ذخیره شده در بانک اطلاعاتی باشد که باید روی داده ها اجرا شود .
متد ExecuteNonQuery :
این متد دستورات را بر روی بانک اطلاعات اجرا می کند .
برای استفاده از این متد باید ابتدا اتصال خود را به بانک اطلاعاتی برقرار کنید سپس با فراخوانی این متد دستور موجود در شئ Command را اجرا کنید .
کلاس SqlDataReader :
از طریق این کلاس می توانیم اطلاعات را از بانک دریافت کنیم . که به صورت زیر تعریف می شود :


SqlDataReader dr;


متد ExecuteReader :
برای دریافت اطلاعات از بانک از متد ExecuteReader شی تقاضا استفاده می کنیم ، یک شی از نوع SqlDataReader تعریف کرده و مقدار ExecuteReader را برابر آن قرار می دهیم


SqlDataReader dr = Cmd.ExecuteReader();


سپس از طریق متد Read شی DataReader اطلاعات را در یک حلقه واکشی می کنیم .
ارائه مراحل کلی یک ارتباط و مثال

برای تقاضا از یک جدول در بانک اطلاعاتی باید مراحل زیر طی شود :
1- اضافه نمودن فضا نام های مورد نیاز : برای ارتباط با بانک های اطلاعاتی به فضا نام System.Data و همچنین فضا نام System.Data.SqlClient برای کار با دیتابس SQLServer و فضا نام System.Data.Oledb برای کار با بانک Access نیازمندیم .
2- تعیین رشته اتصال (ConnectionString) : رشته اتصال رشته شامل تنظیماتی جهت اتصال به بانک اطلاعاتی می باشد ، این رشته برای هر بانک متفاوت خواهد بود
3-تعیین شی اتصال (Connection Object) : کلاسی است برای برقراری ارتباط با بانک اطلاعاتی است ، این شی که از کلاس DbConnection ارث بری می کند اعمالی مانند باز و بسته کردن اتصال با بانک را از طریق رشته اتصال انجام می دهد.
4- تعیین رشته تقاضا (Command Text) : همان دستورات SQL است که جهت یک تفاضا ارائه می گردد ، این تفضا جهت دریافت اطلاعات (Select) درج اطلاعات (Insert) ، ویرایش اطلاعات(Update) و یا حذف اطلاعات(Delete) یا... صورت می گیرد .
5- تعیین شی تقاضا (Command Object) : کلاسی است جهت ارسال و دریافت تقاضا از طریق شی اتصال به بانک اطلاعاتی
6- باز کردن اتصال
7- اجرای درخواست
8- دریافت اطلاعات (در صورتی که تقاضا Select باشد)
9- بستن اتصال
- «درج ، حذف و بروز رسانی » برای درج ، حذف و بروز رسانی به صورت متصل و مستقیم از متد ExecuteNoneQuery مربوط به شی Command استفاده می شود . این شی درخواست مربوط به insert,delete,update یا هر درخواست دیگری را بدون هیچ درخواستی انجام میدهد و خروجی آن تعداد سطر های تحت تاثیر درخواست می باشد.



string connectionString = "Data Source=(local);Initial Catalog=univercity;Integrated Security=true;”;
SqlConnection Con = new SqlConnection(connectionString);
string commandText = "insert into student(name,family) values('ali','arefi’)”;
SqlCommand Cmd = new SqlCommand(CommandText, Con);
Con.Open();
Cmd.ExecuteNonQuery();
Con.Close();

معرفی خاصیت ها و دو کد نمونه Placeholder ها :متغیرهایی هستند که در یک دستور Sql قرار می گیرندو می توانند در زمان اجرای برنامه جای خود را با عبارتی خاص عوض کنند این متغیرها با علامت @ در یک دستور مشخص می شوند . و هنگامی که از آنها در یک دستور Sql استفاده کنیم قبل از اجرای دستور باید تمامی آنها را با مقادیر مناسب تعویض کنیم . که این کار به صورت اتوماتیک توسط برنامه در زمان اجرای دستور انجام می شود.اما باید پارامترهایی را ایجاد کرده و آن را در لیست parameters در شئ ایجاد شده از کلاس SqlCommand قرار دهیم تا برنامه بداند هنگام اجرای دستور هر placeholder را باید با مقدار چه متغیری در برنامه عوض کند . نکته – هیچ ضرورتی ندارد که نام یک placeholder همنام فیلدی باشد که قرار است مقدار placeholder در آن قرار بگیرد .خاصیت parameters کلاس SqlCommand :برای دسترسی به لیست پارامترهایی که در یک شئ از کلاس SqlCommand وجود دارد می توانیم از خاصیت parameters در این کلاس استفاده کنیم . این خاصیت حاوی لیستی از placeholder ها به همراه متغیرهای وابسته به آنها است بنابراین در کد قبل از اجرای دستور ، باید به وسیله ی این لیست مشخص کنیم که هر placeholder با مقدار چه متغیری باید تعویض شود .مثالی از درج رکورد در بانک اطلاعات : در این کد می خواهیم در جدول student از بانک university ، یک رکورد اضافه کنیم این جدول شامل سه فیلد می باشد که اطلاعات آن توسط کاربر در TextBox ها وارد می شود و برنامه با گرفتن این اطلاعات آنها را در جدول بانک ذخیره می کند .

majid_i68
شنبه 20 اسفند 1390, 02:02 صبح
Strcon= “Data Source = (local);Initial Catalog = university;Integrated Security = True”; SqlConnection Con = New SqlConnection(Strcon);
SqlCommand Cmd = New SqlCommand();
Cmd.Connection = Con;
Cmd.CommandText= “ insert into student id=@id,lname=@lname,fname=@fname”; Cmd.Parameters.AddWithValue(“@id”,TextBox1.Tex t);
Cmd.Parameters.AddWithValue(“@lname”,TextBox2. Text);
Cmd.Parameters.AddWithValue(“@fname”,TextBox3. Text);
Con.Open();
Cmd.ExecuteNonQuery();
Con.Close();

توضیح کد بالا : در خط 1 یک متغیر از نوع String تعریف کردیم و راطلاعات اتصال به بانک را در آن قرار دادیم (connectinString ) .خط 2 : شیئی از نوع SqlConnection ساختیم و رشته StrCon را به عنوان پارامتر به آن فرستادیم .خط 3 : شیئی از نوع SqlCommand ساختیم .خط 4 : خاصیت Connection کلاس SqlCommand را برابر شیئ ساخته شده از کلاس SqlConnection قرار دادیم .خط 5 : دستور اجرایی Sql را به شیئ SqlCommand نسبت دادیم (با استفاده از خاصیت CommandText ).خط 6 ، 7 ، 8 : با استفاده از خاصیت Parameters کلاس SqlCommand به placeholder ها مقدار دادیم .خط 9 : اتصال به بانک را برقرار می کنیم .خط 10 : متد اجرایی ExecuetNonQuery را اجرا می کنیم .خط 11 : اتصال برنامه با بانک را قطع می کنیم .مثالی از اصلاح (update ) اطلاعات یک رکورد :حالا می خواهیم اطلاعات یک رکورد از جدول student را اصلاح کنیم و تغییرات را ثبت نماییم . برای این منظور جدول مورد نظر دارای یک کلید است که می توان با استفاده از آن به تمامی اطلاعات رکورد موردنظر دسترسی پیدا کرد . در این جدول فیلد id (شماره دانشجویی ) کلید جدول است .



Strcon= “Data Source = (local);Initial Catalog = university;Integrated Security = True”;
SqlConnection Con = New SqlConnection(Strcon);
SqlCommand Cmd = New SqlCommand();
Cmd.Connection = Con;
Cmd.CommandText= “update student lname=@lname,fname=@fname where id=@id”;
Cmd.Parameters.AddWithValue(“@id”,TextBox1.Tex t);
Cmd.Parameters.AddWithValue(“@lname”,TextBox2. Text);
Cmd.Parameters.AddWithValue(“@fname”,TextBox3. Text);
Con.Open();
Cmd.ExecuteNonQuery();
Con.Close();

در توضیح کد بالا باید این رو بگم که تمام مراحل آن مانند کد insert می باشد به جز دستور Sql که در خط 5 آمده است و در اینجا update می باشد .

کلاس SqlDataAdapter

کلاس SqlDataAdapter :این کلاس در برنامه های بانک اطلاعاتی ، همانند پلی بین جداول اطلاعاتی و نیز داده های موجود در حافظه که به وسیله ی DataSet نگهداری می شوند ، عمل می کنند . و برای استفاده از آن در برنامه باید یک شیئ از نوع آن ساخته شود .



SqlDataAdapter da = New SqlDataAdapter ();

این کلاس برای دسترسی به بانک اطلاعاتی از شیئ ایجاد شده از کلاس SqlCommand ای که به آن نسبت داده می شود استفاده می کند .و برای دسترسی به بانک اطلاعات از کلاس SqlCommand و SqlConnection استفاده می کند .



da . SelectCommand = New SqlCommand();


خاصیت SelectCommand :

کلاسSqlDataAdapter دارای خاصیتی این خاصیت است .خاصیت SelectCommand حاوی شیئی از نوع SqlCommand است که از دستور موجود در آن شیئ برای دریافت داده های موردنیاز در برنامه از بانک اطلاعاتی به کار می رود یعنی SqlDataAdapter ، دستوری را که در خاصیت SqlCommand نگهداری می شود را روی بانک اطلاعاتی اجرا کرده و نتایج آن را در کلاس هایی مانند DataSet و یا DataTable قرار می دهد تا در برنامه مورد استفاده قرار گیرند .علاوه بر این ، کلاس SqlDataAdapter دارای خاصیت هایی به نام DeleteCommand ، InsertCommand و UpdatCommand است که به هر یک شیئی از نوع SqlCommand را قبول می کنند و DataAdapter از دستور ذخیره شده در هر یک از آنها به ترتیب بای حذف ، درج و ویرایش داده ها در بانک اطلاعاتی استفاده می کند .
* هنگامی که بخواهید با استفاده از کلاس DataAdapter اطلاعات مورد نیاز خود را از یک بانک اطلاعاتی دریافت کنید ابتدا باید خاصیت SelectCommand را در DataAdapter تنظیم کنید

*خاصیت SelectCommand شیئی از نوع SqlCommand دریافت کرده که این شیئ مشخص می کند داده ها چگونه باید از بانک اطلاعات انتخاب شده و نیز چه داده هایی باید انتخاب شوند .

*اشیاء از نوع SqlCommand نیز دارای خاصیتهایی هستند که قبل از استفاده باید آنها را تنظیم کرد این خاصیت ها عبارتند از :

- Connection : یک شیئ از کلاس SqlConnection در این قسمت قرار گرفته و نحوه ی اتصال به بانک اطلاعاتی را مشخص می کند .



da.SelectCommand.Connection = Con;

- CommandText : دستور Sql و یا پروسیجر ذخیره شده در بانک اطلاعاتی که باید توسط این شیئ اجرا شود ، در این قسمت ذخیره می شود .



da.SelectCommand.CommandText = “select fields from table ”;

توضیح کد بالا :در اینجا نوع دستور select می باشد و منظور از fields ، نام فیلدهایی است که می خواهیم اطلاعات آنها را استخراج کنیم اگر بخواهیم همه ی آنها را استخراج کنیم از * استفاده می کنیم و منظور از table نیز نام جدولی است که می خواهیم اطلاعات را از آن استخراج کنیم . نمونه کد :برای مثال می خواهیم اطلاعات فیلدهای نام ، نام خانوادگی و شماره دانشجویی از جدول دانشجو را استخراج کنیم و برای کارمورد نظر استفاده کنیم (پس ما در اینجا فقط اطلاعات را استخراج می کنیم ).


SqlConnection Con = NewSqlConnection(connectionstring); - 1
SqlDataAdapter da = New SqlDataAdapter(); - 2
da.SelectCommand.Connection = Con; - 3
da.SelectCommand.CommandText = “selectfname,lname,id from student ”; - 4

دسترسی اطلاعات و اتصال داده ها

دسترسی به اطلاعات :
در ویژوال C# برای دسترسی به اطلاعات و نمایش آنها سه کامپوننت مهم و اصلی وجود دارند که عبارتند از :
Binding Source ،BindingNavigator ، Table Adapter ، DataSet .
* کامپوننتهای BindingNavigator، Binding Source و DataSetرا می توانید در قسمت Data جعبه ابزار ببینید .
* کامپوننت TableAdapter نیز بر اساس مسیری که برای دسترسی به اطلاعات درون بانک اطلاعاتی و نمایش آنها طی می کنیم به صورت اتوماتیک ایجاد می شود . در ادامه توضیح مختصری در مورد کامپوننتهای مطرح شده با هم مرور می کنیم .
کامپوننت DataSet :
مانند یک موتور اطلاعاتی کوچک عمل می کند با استفاده از DataSet ابتدا به بانک وصل می شویم اطلاعات مورد نیاز را در حافظه DataSet قرار می دهیم سپس ارتباط با بانک را قطع می کنیم از این پس هر تغییراتی که خواستیم می توانیم بر روی اطلاعات درون DataSet اعمال کنیم سپس در آخر تمام تغییرات را بر روی بانک اطلاعاتی اعمال کنیم .
- با استفاده از این کامپوننت اطلاعات درون جداولی نگهداری می شوند و با استفاده از کامپوننت DataView به چندین روش پرس و جوهایی را روی داده ها انجام داد .

کامپوننت DataGridView :
این کنترل برای نمایش داده های موجود در یک بانک اطلاعاتی در فرم برنامه به کار می رود .برای کار با آن کافی است آن را به منبع داده های خود ، مثلا یکی از جدولهای موجود در بانک اطلاعاتی متصل کرده و سپس این کنترل را تنظیم کنیم تا دادهای جدول مورد نظر همانند یک جدول نمایش دهد (ستونهای این جدول نام فیلدها و ردیفهای آن اطلاعات مربوط به فیلدها که هر کدام در یک رکورد نگهداری می شوند ) .
- علاوه بر این به وسیله این کنترل می توانید عنوان ستونهای داده ها و یا نوع نمایش آنها را نیز بدلخواه تعیین کنیم
کامپوننت BindingSource :
این کنترل همانند پلی برای ایجاد ارتباط بین داده های موجود در منبع داده ای شما (مانند DataSet ) و کنترل هایی که برای نمایش داده ها مورد استفاده قرار می گیرند(مانند TextBox ) به کار می رود .
بنابراین هنگامی که بخواهید به وسیله ی کنترل هایی و یا به هر دلیل دیگری بخواهید به آنها د منبع اطلاعاتی دسترسی داشته باشید ، این ارتباط باید از طریق این کامپوننت صورت بگیرد .
کامپوننت BindingNavigator :
این کنترل یک رابط گرافیکی استاندارد برای حرکت بین رکوردهای موجود در یک بانک اطلاعاتی ایجاد می کند .
همچنین مانند کنترل DataGridView می تواند به کنترل BindingSource متصل شده و از طریق آن به داده های موجود در برنامه دسترسی داشته باشد .
کامپوننت TableAdapter :
این کامپوننت در جعبه ابزار وجود ندارد بلکه با توجه به روشی که کامپوننت های داده ای دیگر را در برنامه قرار داده و آنها را تنظیم می کنید و به صورت اتوماتیک ایجاد می شود
- این کامپوننت حاوی پرس و جوهایی برای انتخاب داده های موجود در بانک اطلاعاتی و نیز اطلاعاتی در مورد نحوه اتصال برنامه به بانک است .
- همچنین حاوی متدهایی است که به وسیله آنها می توان داده ها را از جداول بانک اطلاعاتی بدست آورد و در کامپوننت هایی مانند DataSet قرار داد و سپس در برنامه از آن داده ها استفاده کرد .
- این کامپوننت این قابلیت را دارد که بر اساس دستور Select ای که برای انتخاب داده ها از بانک اطلاعاتی برای آن وارد می کنید دستورات Insert ، Update و نیز Delete مناسب برای تغییر داده های انتخاب شده در بانک اطلاعاتی ایجاد کند .

* اتصال داده ها :
اتصال داده یعنی اینکه داده های را که به وسیله ی کامپوننت BindingSource به آنها دسترسی دارید را به یک کنترل خاص نسبت دهید (مثلا به یک DataGridView یا TextBox ، ... ) .
به عبارت دیگر یک کنترل را بتوانید به نحوی تنظیم کنید که داده های مورد نیاز خود را به وسیله کامپوننت های دسترسی داده ها در برنامه دریافت کند و سپس آنها را به صورت اتوماتیک به کاربر نمایش دهد .
- در C# بعضی از کنترل ها وجود دارند که مخصوص این کار طراحی شده اند مانند کنترل DataGridView و یا TextBox .
------------------------------------------------------------------------------------
*** و در آخر نکته ای را از استادم عرض میکنم :
وقتی به حدی از تجربه و کارایی میرسی ، تعداد شرکت هایی که به اندازه تجربه شما و یا بیشتر باشن از تعداد انگشتان دست هم کمتر میشن.چون توی بیشتر شرکت های ایرانی 90% کار فقط
Insert ، update و Delete
هست.شما با چیزی درگیر نمیشید که لازم باشه بیشتر از این حد رو بلد باشید.:لبخند::لبخند::لبخند:

mehdi zanjani
شنبه 20 اسفند 1390, 02:18 صبح
وقتی هم فقط insert و delete و update بلد باشی تازه میفهمی 900 نفر قبل از تو جلو شرکت های ایرانی صف کشیدن و چیزایی که تو بلدی رو همه بلدن!!! :قهقهه::لبخند::لبخند:

برنامه نویسی موفق میشه که 1 قدم از بقیه جلوتر باشه!

اینم از LinQ . . .

modern_amin
شنبه 20 اسفند 1390, 08:01 صبح
آفرین بچه ها
جفته pdf ها خوب توضیح داده شده بود ، مخصوصا LINQ
.
.
دوستان بهترین روش ارتباط چیه؟

modern_amin
شنبه 20 اسفند 1390, 08:08 صبح
با تشکر ، من در اینباره تحقیق میکنم و اگز به نتایج مثبت دیگری دست یافتم
یک اساس کشی کدی انجام میدم...

mehdi zanjani
شنبه 20 اسفند 1390, 10:01 صبح
سوالتون ربطی به این تاپیک نداره تو خیلی از تاپیک ها بحث شده و با قوانین سایت تناقض داره الان از مدیرای سایت ببینن پست هارو حذف میکنن!
ولی فایل زیر رو دانلود کن خیلی به دردت میخوره 4shared آپ کردم که کسی مشکل فیلتر نداشته باشه!!


دانلود (http://www.4shared.com/rar/3IJ9huTV/Access_To_Other_Form_Object.html)

sasan_22
سه شنبه 10 بهمن 1391, 20:42 عصر
سلام بر همگی
اصل مطلب:
1- این EF چیست و آیا جزئی از ADO.NET هست یا نه؟
2- WCF چطور؟؟
3- آیا روش های برقراری ارتباط با بانک در هر کدوم از موارد (EF - WCF - ADO.NET) یکسان هست یا نه؟؟
4- به جز موارد ذکر شده آیا می توان از طرق دیگر به بانک دسترسی داشت یا نه؟؟
5- کدام مورد را پیشنهاد میکنید (خودم ADO.NET رو میپسندم ولی جایی خوندم که EF سرعت و کنترلش بهتره آیا صحت داره؟؟)
6-نحوه کوچ از ADO.NET به موارد فوق ذکر (یا مواردی که شما پیشنهاد میکیند) را هم بیان کنید:خجالت:

با تشکر

ma.rad
سه شنبه 10 بهمن 1391, 22:16 عصر
سلام دوست عزیز، سوال های شما بسیار تکراریه و پاسخ سوال ها طولانی وفکر نکنم دوستان حوصله جواب دادن داشته باشن ، خواهشا قبل از ایجاد تاپیک جستجو کنید.

abbasy
شنبه 09 آذر 1392, 13:59 عصر
مهندس رانا ببخشيد ميشه در مورد اين كدتون بيشتر توضيح بفرماييد -مثلا اسم سرور -نام ديتاسورس -يا اينكه اگر نرم افزار روي سيستم ديگه نصب بشه ايا خودش بصورت اتومات رشته اتصال را ميسازه؟ ممنون ميشم بابت توضيحاتتون.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static SqlConnection ConnectToFix()
{

string ConnectioString = "Data Source="+ System.Net.Dns.GetHostName()+";Initial Catalog=Fix;Integrated Security=True; Min Pool Size = 20";
SqlConnection connection = new SqlConnection(ConnectioString );

try
{
connection.Open();
}
catch (SqlException)
{
connection.Close();
}
return connection;


}





موقع استفاده هم هر جايي كه بخوام اينطوري فراخواني ميكنم:
1
2
SqlConnection connection = Connection.ConnectToFix();

abolfazl_d_sh
چهارشنبه 30 بهمن 1392, 12:18 عصر
سلام
برای ارتباط با دیتابیس چه روشی بهتر هست.منظورم از نظر سرعت،راحتی و به روز بودن اون روش هست.
تا جایی که من فهمیدم سه روش برای این کار وجود داره:
1-ADO.NET
2-Linq
3-Entity Framework
با دستورات ado و linq یکم آشنا هستم و میخام یکیشو بطور جدی ادامه بدم ولی موندم چیکار کنم.چند جا دیدم که نوشته بود ado منسوخ شده باز یه جا تو همین تالار دیدم که نوشته بود linq منسوخ شده.لطفا راهنمایی کنید
ممنون:لبخندساده:

csp90.polite
چهارشنبه 30 بهمن 1392, 12:22 عصر
سلام
linq رو مسلط شو و در ادامه entity کار کن
تا به روز باشی
بحث منسوخی نیست، مهم اینه برنامه با پایگاهت بی خطا کار ارائه بده

bazikadeh
چهارشنبه 30 بهمن 1392, 14:48 عصر
یه سرچ بزنی میفهمین ...
لطفا قبل از زدن پست سرچ کنین

Mousavmousab
چهارشنبه 30 بهمن 1392, 17:31 عصر
سلام

دوست عزیز خودت باید کار کنی و تجربه کنی.

linux
چهارشنبه 30 بهمن 1392, 19:41 عصر
سلام
برای ارتباط با دیتابیس چه روشی بهتر هست.منظورم از نظر سرعت،راحتی و به روز بودن اون روش هست.
تا جایی که من فهمیدم سه روش برای این کار وجود داره:
1-ADO.NET
2-Linq
3-Entity Framework
با دستورات ado و linq یکم آشنا هستم و میخام یکیشو بطور جدی ادامه بدم ولی موندم چیکار کنم.چند جا دیدم که نوشته بود ado منسوخ شده باز یه جا تو همین تالار دیدم که نوشته بود linq منسوخ شده.لطفا راهنمایی کنید
ممنون:لبخندساده:

linq این وسط چی کاره بود؟! چطوری با linq می خواهی اینکار را بکنی بگو شاید ما هم یک چیزی یاد گرفتیم! نگی منظورم linq to sql بوده ها!
کلا ado.net پایه هست. و EF یک orm هست که از ado.net استفاده می کنه. EF را یاد بگیرید در ۹۹٪ مواقع همانچیزی هست که شما می خواهید.

abolfazl_d_sh
شنبه 03 اسفند 1392, 21:07 عصر
linq این وسط چی کاره بود؟! چطوری با linq می خواهی اینکار را بکنی بگو شاید ما هم یک چیزی یاد گرفتیم! نگی منظورم linq to sql بوده ها!
کلا ado.net پایه هست. و EF یک orm هست که از ado.net استفاده می کنه. EF را یاد بگیرید در ۹۹٪ مواقع همانچیزی هست که شما می خواهید.

linux گرامی یعنی نمیشه با linq با پایگاه داده ارتباط برقرار کرد؟
دقیقا منطورم linq to sql بود.

linux
دوشنبه 05 اسفند 1392, 08:31 صبح
linux گرامی یعنی نمیشه با linq با پایگاه داده ارتباط برقرار کرد؟
دقیقا منطورم linq to sql بود.
linq در حالت کلی یک زبان پرس و جو از مجموعه‌هایی هست که اشیا را داخل خودشان ذخیره می کنند مانند List ,dictionary ,... چیزی که می شه به دیتابیس وصل شد همون linq to sql هست که دیگه میشه گفت منسوخ شده.

abolfazl_d_sh
دوشنبه 05 اسفند 1392, 17:06 عصر
linq در حالت کلی یک زبان پرس و جو از مجموعه‌هایی هست که اشیا را داخل خودشان ذخیره می کنند مانند List ,dictionary ,... چیزی که می شه به دیتابیس وصل شد همون linq to sql هست که دیگه میشه گفت منسوخ شده.

ممنون از راهنمایی
ولی من گیج شدم.....یه جا از linq تعریف میشه یه جا میگن منسوخ شده....
موندم کدوم راهو انتخاب کنم؟

linux
دوشنبه 05 اسفند 1392, 18:24 عصر
ممنون از راهنمایی
ولی من گیج شدم.....یه جا از linq تعریف میشه یه جا میگن منسوخ شده....
موندم کدوم راهو انتخاب کنم؟
linq to sql توسعه داده نمی شود یعنی ویژگیهایی جدیدی ارایه نمی گردد همین طوری که تا دات نت ۳.۵ توسعه داده شده می ماند. به جاش تمرکز بر روی EF هست.

linux
دوشنبه 05 اسفند 1392, 18:29 عصر
سلام بر همگی
اصل مطلب:
1- این EF چیست و آیا جزئی از ADO.NET هست یا نه؟
2- WCF چطور؟؟
3- آیا روش های برقراری ارتباط با بانک در هر کدوم از موارد (EF - WCF - ADO.NET) یکسان هست یا نه؟؟
4- به جز موارد ذکر شده آیا می توان از طرق دیگر به بانک دسترسی داشت یا نه؟؟
5- کدام مورد را پیشنهاد میکنید (خودم ADO.NET رو میپسندم ولی جایی خوندم که EF سرعت و کنترلش بهتره آیا صحت داره؟؟)
6-نحوه کوچ از ADO.NET به موارد فوق ذکر (یا مواردی که شما پیشنهاد میکیند) را هم بیان کنید:خجالت:

با تشکر
۱- EF یک orm هست بخشی از ado.net نیست یک لایه بالاتر از ado.net هست.
۲- wcf برای تولید وب سرویس هست مبتنی بر wsdl . ربطی به ارتباط با دیتابیس ندارد.
۳- wcf خارج از موضوع است و دوتای دیگه کمی با هم متفاوت هستند.
۴- بله از orm دیگر می تونید استفاده کنید مثل nhibernate, dapper ولی پایه اینها هم همون ado.net هست.
۵- از یک orm استفاده کنید قطعا سرعت تولید برنامه بالاتر هست.
۶- در اینترنت بگردید کلی مطلب هست
۳-