مباحث مربوط به Ado.Net

_narjes

عضو جدید
سلام به همگی
راستش دیدم یه مبحث کامل در مورد Ado.Net تو تالار نیست واسه همین اومدم این تاپیک رو زدم از دوستان می خوام که همکاری کنن ;) تا مبحث کامل داشته باشیم
********************************************************************************

تعریف : به مجموعه کامپوننت هایی که برای دسترسی به داده های بانک اطلاعاتی در .NET استفاده می شود Ado.Net گفته می شود .
می توانیم بگوییم که دو روش برای اتصال به بانک وجود دارد اتصال متصل( online )و غیر متصل .

کار با بانک اطلاعاتی بصورت متصل :
هنگام استفاده از اشیا و متد های مربوط به این نوع اتصال ارتباط بین فرم و بانک در تمام مدت باید برقرار باشد برای همین موضوع این نوع کار با بانک متصل می نامند. معمولا این نوع کار با بانک از سرعت بسیار بالاتری نسبت به روش دوم که غیر متصل نام دارد برخوردار است .

کلاسهای ارتباط با بانکهای اطلاعاتی :
توجه - در اینجا در مثالها از بانک اطلاعاتی SqlServer استفاده میشود.
برای استفاده از این کلاس ها باید فضای نام زیر را با استفاده از 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 به بانک متصل شده و یا اتصال خود را قطع کنیم .
کد:
[RIGHT][FONT=Tahoma]Con.Open();[/FONT][FONT=Tahoma] و [/FONT][FONT=Tahoma]Con.Close();[/FONT][/RIGHT]
 
آخرین ویرایش:

_narjes

عضو جدید
ادامه کلاسهای ارتباط با بانکهای اطلاعاتی

ادامه کلاسهای ارتباط با بانکهای اطلاعاتی

2- کلاس SqlCommand :
این کلاس حاوی یک دستور Sql برای اجرا بر روی داده های دریافت شده از بانک اطلاعاتی است این دستور می تواند یک دستور SELECT برای انتخاب داده هایی خاص ، یک دستور INSERT برای درج داده های جدید در بانک اطلاعاتی ، یک دستور DELETE برای حذف داده ها از بانک اطلاعات و یا حتی فراخوانی یک پروسیجر ذخیره شده در بانک اطلاعاتی می باشد .
ایجاد آن به صورت زیر می باشد :
کد:
[FONT=Tahoma]SqlCommand Cmd = New SqlCommand();[/FONT][FONT=Tahoma] [/FONT]
نکته – در برنامه های بانک اطلاعاتی معمولا از اشیای ایجاد شده از کلاس SqlCommand به تنهایی استفاده نمی کنند بلکه آنها را همراه با DataSet ها و DataAdapter ها به کار می برند .
همچنین اشیای SqlCommand می توانند به همراه اشیای ایجاد شده از کلاس DataReader مورد استفاده قرار گیرند .
خاصیت connection کلاس SqlCommand :
قبل از اینکه بتوانیم از یک شئ از کلاس SqlCommand استفاده کنیم باید بعضی از خاصیت های آن را تنظیم کنیم اولین خاصیتی که باید تنظیم شود خاصیت Conection است .
این خاصیت می تواند یک مقدار از نوع SqlConnection را دریافت کند :
کد:
[FONT=Tahoma]Cmd .Connection = Con ;[/FONT][FONT=Tahoma][/FONT]
توضیح کد بالا :
Cmd همان شیئی است که از کلاس SqlCommand قبلا ساخته ایم .
Con شیئی است که از نوع SqlConnection قبلا ساخته ایم .
خاصیت CommandText کلاس SqlCommand :
خاصیتبعدی که باید از کلاس SqlCommand تنظیم شود خاصیت CommandText است .
این خاصیت متنی را دریافت می کند که می تواند حاوی یک دستور Sql و یا فراخوانی یک پروسیجر ذخیره شده در بانک اطلاعاتی باشد که باید روی داده ها اجرا شود .
متد ExecuteNonQuery :
این متد دستورات را بر روی بانک اطلاعات اجرا می کند .
برای استفاده از این متد باید ابتدا اتصال خود را به بانک اطلاعاتی برقرار کنید سپس با فراخوانی این متد دستور موجود در شئ Command را اجرا کنید .
کلاس SqlDataReader :
از طریق این کلاس می توانیم اطلاعات را از بانک دریافت کنیم . که به صورت زیر تعریف می شود :
کد:
[FONT=Tahoma]SqlDataReader  dr;[/FONT][FONT=Tahoma] [/FONT]
متد ExecuteReader :
برای دریافت اطلاعات از بانک از متد ExecuteReader شی تقاضا استفاده می کنیم ، یک شی از نوع SqlDataReader تعریف کرده و مقدار ExecuteReader را برابر آن قرار می دهیم
کد:
[FONT=Century Gothic]SqlDataReader dr = Cmd.ExecuteReader();[/FONT][FONT=Tahoma][/FONT]
سپس از طریق متد Read شی DataReader اطلاعات را در یک حلقه واکشی می کنیم .
 

_narjes

عضو جدید
ارائه مراحل کلی یک ارتباط و مثال

ارائه مراحل کلی یک ارتباط و مثال

برای تقاضا از یک جدول در بانک اطلاعاتی باید مراحل زیر طی شود :

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 یا هر درخواست دیگری را بدون هیچ درخواستی انجام میدهد و خروجی آن تعداد سطر های تحت تاثیر درخواست می باشد.
کد:
[FONT=Tahoma][FONT=Tahoma]string connectionString = "Data Source=(local);Initial Catalog=univercity;Integrated Security=true;”;[/FONT][/FONT]
[FONT=Tahoma][SIZE=2][FONT=Tahoma]SqlConnection Con = new SqlConnection(connectionString);[/FONT][/SIZE][/FONT]
[FONT=Tahoma][SIZE=2][FONT=Tahoma]string commandText = "insert into student(name,family) values('ali','arefi’)”;[/FONT][/SIZE][/FONT]
[FONT=Tahoma][SIZE=2][FONT=Tahoma]SqlCommand Cmd = new SqlCommand(CommandText, Con);[/FONT][/SIZE][/FONT]
[FONT=Tahoma][SIZE=2][FONT=Tahoma]Con.Open();[/FONT][/SIZE][/FONT]
[FONT=Tahoma][SIZE=2][FONT=Tahoma]Cmd.ExecuteNonQuery();[/FONT][/SIZE][/FONT]
[FONT=Tahoma][SIZE=2][FONT=Tahoma]Con.Close();[/FONT][/SIZE][/FONT]
 

tohid_madadi

عضو جدید
سلام. ممنون از توضيحات خوب. ولي يه سوال!! حتما بايد SQLSERVER رو نصب داشته باشم؟ بانك اطلاعاتي كه ازش استفاده مي كنم رو كجا قرار بدم كه در دسترس باشه؟ بايد تو شاخه ي پروژه ي من باشه؟
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام. ممنون از توضيحات خوب. ولي يه سوال!! حتما بايد SQLSERVER رو نصب داشته باشم؟ بانك اطلاعاتي كه ازش استفاده مي كنم رو كجا قرار بدم كه در دسترس باشه؟ بايد تو شاخه ي پروژه ي من باشه؟

حتماً نياز نیست QL Server بصورت full نصب باشه، اگر فقط Engine آن هم نصب باشه شما میتونید کار کنيد. فقط باید دقت کنید که بدون رابط کاربر، باید برای attachT dettach و موارد ديگر کد بنويسید. کد attach بانک هم در پست ها گفته شده است.
 

RIG

متخصص C#.net
سلام. ممنون از توضيحات خوب. ولي يه سوال!! حتما بايد SQLSERVER رو نصب داشته باشم؟ بانك اطلاعاتي كه ازش استفاده مي كنم رو كجا قرار بدم كه در دسترس باشه؟ بايد تو شاخه ي پروژه ي من باشه؟
اینجا بزاری بهتر
bin -debug
 

_narjes

عضو جدید
معرفی خاصیت ها و دو کد نمونه

معرفی خاصیت ها و دو کد نمونه

Placeholder ها :

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

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

در این کد می خواهیم در جدول student از بانک university ، یک رکورد اضافه کنیم این جدول شامل سه فیلد می باشد که اطلاعات آن توسط کاربر در TextBox ها وارد می شود و برنامه با گرفتن این اطلاعات آنها را در جدول بانک ذخیره می کند .
کد:
[/SIZE]
[RIGHT][FONT=Arial][SIZE=3]Strcon= “Data Source = (local);Initial Catalog = university;Integrated Security = True”;[FONT=Arial][FONT=Tahoma] -1 [/FONT][/FONT][/SIZE][/FONT][FONT=Arial]
[SIZE=3]SqlConnection Con = New SqlConnection(Strcon);[FONT=Arial][FONT=Tahoma]  - 2[/FONT][/FONT][/SIZE]
[SIZE=3]SqlCommand Cmd = New SqlCommand();[FONT=Arial][FONT=Tahoma]  - 3[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.Connection = Con;[FONT=Arial][FONT=Tahoma]  - 4[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.CommandText= “ insert into student  id=@id,lname=@lname,fname=@fname”;[FONT=Arial][FONT=Tahoma]  - 5[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.Parameters.AddWithValue(“@id”,TextBox1.Text);[FONT=Arial][FONT=Tahoma]  - 6[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.Parameters.AddWithValue(“@lname”,TextBox2.Text);[FONT=Arial][FONT=Tahoma]  - 7[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.Parameters.AddWithValue(“@fname”,TextBox3.Text);[FONT=Arial][FONT=Tahoma]  - 8[/FONT][/FONT][/SIZE]
[SIZE=3]Con.Open();[FONT=Arial][FONT=Tahoma]  - 9[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.ExecuteNonQuery();[FONT=Arial][FONT=Tahoma]  - 10[/FONT][/FONT][/SIZE]
[SIZE=3]Con.Close();[FONT=Arial][FONT=Tahoma]  - 11[/FONT][/FONT][/SIZE][/RIGHT]
[/FONT][SIZE=3]
توضیح کد بالا : در خط 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 (شماره دانشجویی ) کلید جدول است .
کد:
[/SIZE]
[RIGHT][FONT=Arial][SIZE=3]Strcon= “Data Source = (local);Initial Catalog = university;Integrated Security = True”;[FONT=Arial][FONT=Tahoma] -1 [/FONT][/FONT][/SIZE][/FONT][FONT=Arial]
[SIZE=3]SqlConnection Con = New SqlConnection(Strcon);[FONT=Arial][FONT=Tahoma]  - 2[/FONT][/FONT][/SIZE]
[SIZE=3]SqlCommand Cmd = New SqlCommand();[FONT=Arial][FONT=Tahoma]  - 3[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.Connection = Con;[FONT=Arial][FONT=Tahoma]  - 4[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.CommandText= “update student  lname=@lname,fname=@fname where id=@id”;[FONT=Arial][FONT=Tahoma]  - 5[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.Parameters.AddWithValue(“@id”,TextBox1.Text);[FONT=Arial][FONT=Tahoma]  - 6[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.Parameters.AddWithValue(“@lname”,TextBox2.Text);[FONT=Arial][FONT=Tahoma]  - 7[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.Parameters.AddWithValue(“@fname”,TextBox3.Text);[FONT=Arial][FONT=Tahoma]  - 8[/FONT][/FONT][/SIZE]
[SIZE=3]Con.Open();[FONT=Arial][FONT=Tahoma]  - 9[/FONT][/FONT][/SIZE]
[SIZE=3]Cmd.ExecuteNonQuery();[FONT=Arial][FONT=Tahoma]  - 10[/FONT][/FONT][/SIZE]
[SIZE=3]Con.Close();[FONT=Arial][FONT=Tahoma]  - 11[/FONT][/FONT][/SIZE][/RIGHT]
[/FONT][SIZE=3]
در توضیح کد بالا باید این رو بگم که تمام مراحل آن مانند کد insert می باشد به جز دستور Sql که در خط 5 آمده است و در اینجا update می باشد .
 

tohid_madadi

عضو جدید
من هر کاري مي کنم تو قسمت Open برنامه مشکل دارم. فکر کنم کانکت نميشه به بانک اطلاعاتي!!
تمام کد هام رو هم چک کردم. يکي در باره ي درست کردن فايل SQL و نحوه ي تنظيمات اون براي متصل کردن به برنامه و جاي دقيقي که بايد گذاشته بشه توضيح بده. دقيقا پسوند فايل SQL که از اون استفاده مي کنيم چيه؟!!
ممنون.
 

RIG

متخصص C#.net
خط کدی که باهاش وصل میشی رو اینجا بذار . در ضمن ارورت چیه ؟
 

tohid_madadi

عضو جدید
خط کدی که باهاش وصل میشی رو اینجا بذار . در ضمن ارورت چیه ؟
برنامه اينه:
SqlConnection objConnection = new SqlConnection("server=localhost;Initial Catalog =Test1;Integrated Security = True");//
SqlDataAdapter objDataAdapter = new SqlDataAdapter();
DataSet objDataset = new DataSet();


objDataAdapter.SelectCommand = new SqlCommand();
objDataAdapter.SelectCommand.Connection = objConnection;
objDataAdapter.SelectCommand.CommandText = "SELECT fname,lname, number FROM table_1";
objDataAdapter.SelectCommand.CommandType = CommandType.Text;
objConnection.Open();
objDataAdapter.Fill(objDataset, "table_1");
objConnection.Close();
.
.
.
تو اجرا خط objConnection.open زرد ميشه و يه پنجره ي ارور كه عنوانش هست SqlException was unhandled مياد.
ممنون ازت. منتظرم.



 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام دوست عزيز، در صورتی که با SQL Authentication متصل میشی باید بنویسی:
User ID=sa;Password=... و به جای Integrated security=true هم اگه از Persist Security Info=true استفاده کنی بهتره.
امیدوارم مشکلت حل شه
اگر حل نشد میتونی از sqlconnection استفاده کنی البته کامپوننت اون و بعد رشته اتصال رو بصورت ویزارد بسازی تا ببینی کجا مشکل داره.
 

RIG

متخصص C#.net
برادر ارورش رو بذار پایین unhandle ارورش رو نوشته یه توضیح هست .
 

tohid_madadi

عضو جدید
برادر ارورش رو بذار پایین unhandle ارورش رو نوشته یه توضیح هست .

اين رو نوشته:
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

من تازه SQL رو دارم كار مي كنم. و تا الان اصلا SQLSERVER رو باز هم نكرده بودم كه ببينم چطوري هست. الان هم تو اين چند روز كه تمرين مي كنم كلي گيج شدم. :(
برنامه ي ساده يا مثالي نيست كه بتونم ازش الگو برداري كنم ؟‌ ببينم چطوري كار كرده و من هم اتصال رو برقرار كنم؟
باز هم از كمكتون ممنونم:smile:
 

tohid_madadi

عضو جدید
سلام دوست عزيز، در صورتی که با SQL Authentication متصل میشی باید بنویسی:
User ID=sa;Password=... و به جای Integrated security=true هم اگه از Persist Security Info=true استفاده کنی بهتره.
امیدوارم مشکلت حل شه
اگر حل نشد میتونی از sqlconnection استفاده کنی البته کامپوننت اون و بعد رشته اتصال رو بصورت ویزارد بسازی تا ببینی کجا مشکل داره.


دوست من،‌اين كارهايي كه گفتي جواب نداد!!:(
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
این پیغام مربوط به همون مواردی است که گفتم. در صورتی که اطلاعات درست نباشه در هنگام اتصال این پیغام رو میده. حتی در مورد رجیستر کردن remote هم این مورد صادق هست.
 

RIG

متخصص C#.net
ببین از طریق مسیر ویزاردی پیش برو میتونی datasource رو ببینی و برداری
برو تب data واز طریق add new .... بعدش یه next و بعد newconnection . بعد بانکت رو انتخاب کن و سپس پایین صفحه نوشته connection string میتونی مسیر رو از اونجا برداری بهترین روش همین بود برادر و روش دیگه .
تو قسمت tools برو کانکشن دیتابیس رو بزن

بعدش قسمت change رو کلیک کن سپس sql server رو انتخاب بکن تو قسمت سرور نام کلیک کن و اسم سرورت رو بزن و در اخر سر هم تو قسمت select or enter نام دیتابیس رو انتخاب بکن و دکه advence رو بزن و تو اخر دیالوگ رو به روت اسم کانکشن استرینگ رو برات میذاره




من access داشتم بخاطر همین مثال ....
Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Documents and Settings\Administrator\Desktop\simplework1ADO\simplework1ADO\bin\Debug\AMIN.mdb"
 

tohid_madadi

عضو جدید
ايول
درست شد. مشکل تو کد نويسي نبود. تو بانک اطلاعاتيم بود. انقدر باهاش ور روفتم تا درست شد.
نتونستم به وسيله ي ويزارد کانکشن درست کنم. البته درست ميشد ولي کد نويسي بعدش رو بلد نبود. تازه دارم #C رو شروع مي کنم . تو ويزارد ConnectionString رو ميداد ولي من نمي دونستم چطوري ازش استفاده کنم. هر جا استفاده مي کردم ارور ميداد. متاسفانه بيشتر کتابهاي آموزشي که دوستان معرفي مي کنند به زبان انگليسي هست که من زبانم خوب نيست. اگه اين قسمت که آموزش بانک اطلاعاتي هست رو بيشتر گسترش بدين خيلي عالي ميشه. ما تازه کارها مي تونيم ازش خوب استفاده کنيم و سئوالاتمون رو بپرسيم.
باز هم ازتون ممنونم.
 

RIG

متخصص C#.net
برو تو امضای مهندس negin17h و کتاب های c# رو ببین و میتونی چیز هایی خوبی رو اونجا پیدا کنی.
 

tohid_madadi

عضو جدید
باز هم سلام و باز هم کمک
من ميخوام از بانک اطلاعاتي ، اطلاعاتم رو چاپ بگيرم.
به نظرتون بهترين روش چيه ؟
 

_narjes

عضو جدید
باز هم سلام و باز هم کمک
من ميخوام از بانک اطلاعاتي ، اطلاعاتم رو چاپ بگيرم.
به نظرتون بهترين روش چيه ؟
سلام
اگه منظورتون گزارشگیری و اینجور چیزاست به نظر من مناسبترین راه استفاده از Report Crystal باشه البته نرم افزارهای دیگه ای هم هستند که بتونن این کار رو انجام بدن
 

_narjes

عضو جدید
کلاس SqlDataAdapter

کلاس 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 = New SqlConnection(connectionstring);[FONT=Arial][FONT=Tahoma]   - 1[/FONT][/FONT]
SqlDataAdapter da = New SqlDataAdapter();[FONT=Arial][FONT=Tahoma]   - 2[/FONT][/FONT]
da.SelectCommand.Connection = Con;[FONT=Arial][FONT=Tahoma] - 3[/FONT][/FONT]

da.SelectCommand.CommandText = “select fname,lname,id  from student ”;[FONT=Arial][FONT=Tahoma]  - 4[/FONT][/FONT][/RIGHT]
 
آخرین ویرایش:

_narjes

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

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

دسترسی به اطلاعات :
در ویژوال 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 .
 

clupcd

عضو جدید
دوستان قطعه کد زیر از con.open() ارور میگیره چرا؟
(کد وبی .نت جعفرنژاد)

کد:
    Private Sub Display_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Display.Click
        Dim strsql As String
        Dim strcon As String
        strcon = "Data Source = local;Initial Catalog = members;Integrated Security = True"
        Dim con As New SqlConnection(strcon)
        con.Open()
        strsql = "select * form Members_1"
        Dim da As New SqlDataAdapter(strsql, con)
        Dim ds As New DataSet()
        da.Fill(ds, "Members_1")
        DataGrid1.DataBindings.Add(New Binding("Data source", ds, "Members_1"))
        con.Close()
    End Sub
End Class
 

A.S.Roma

عضو جدید
کاربر ممتاز
دوستان قطعه کد زیر از con.open() ارور میگیره چرا؟
(کد وبی .نت جعفرنژاد)

کد:
    Private Sub Display_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Display.Click
        Dim strsql As String
        Dim strcon As String
        strcon = "Data Source = local;Initial Catalog = members;Integrated Security = True"
        Dim con As New SqlConnection(strcon)
        con.Open()
        strsql = "select * form Members_1"
        Dim da As New SqlDataAdapter(strsql, con)
        Dim ds As New DataSet()
        da.Fill(ds, "Members_1")
        DataGrid1.DataBindings.Add(New Binding("Data source", ds, "Members_1"))
        con.Close()
    End Sub
End Class

آیا دیتابیسی به نام members دارید !؟
 

clupcd

عضو جدید
بلی موجود است با شی datagridwive هم دستی که آدرس بدم فیلد ها رو نمایش میده فقط کانکشن استرینگ روی con.open گیر میداد که رفعذ شد الان روی خط
کد:
da.Fill(ds, "Members_1")
گیر میده
 

clupcd

عضو جدید
دوست عزیز مشکلم حل شد. فقط چنتا سوال برای مطرح است :
1 اگر Data Source = . یا Data Source = (local( بود در هر سیستم که sqlExpress هم باشد کار خواهد کرد؟
و بعد این که اگر من دیتابیس هایم را درکنار فایل های پروژه بگذارم اجرا در سیستم جدید جدول ها را چطور خواهد شناخت (یعنی لازم نباشد روی اون جدول اسکیول فول باشد و کاربر جدول بسازد ) جدول های برنامه همراه برنامه به سیستم دیگر رفته اجرا و ویرایش شوند
ممنونم
 

جفنگ نگو

عضو جدید
دوست عزیز مشکلم حل شد. فقط چنتا سوال برای مطرح است :
1 اگر Data Source = . یا Data Source = (local( بود در هر سیستم که sqlExpress هم باشد کار خواهد کرد؟
و بعد این که اگر من دیتابیس هایم را درکنار فایل های پروژه بگذارم اجرا در سیستم جدید جدول ها را چطور خواهد شناخت (یعنی لازم نباشد روی اون جدول اسکیول فول باشد و کاربر جدول بسازد ) جدول های برنامه همراه برنامه به سیستم دیگر رفته اجرا و ویرایش شوند
ممنونم
سوال اول رو متوجه نشدم اما سوال دوم

دیتابیس شما اگر اس کیو ال باشه باید در سیستم مشتری اتچ شود در غیر این صورت شما نمی توانید از ان استفاده کنید

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

مشتری که جدول و فیلد و این چیزها رو نمیسازه
 

clupcd

عضو جدید
چجوری در فایل نصب برنامه دیتابیس رو اتچ کنم (setup) که نیاز نباشه هیچ نرم افزاری در سیستم دیگر( مانند sqlserver) نصب باشه یعنی دیتابیس در setup برنامه به طور نامحصوص باشه
 

Similar threads

بالا