إن شاء الله سوف أقوم يوضع مجموعة من الدروس في ال ADO.Net
قريبا بإذن الله
إن شاء الله سوف أقوم يوضع مجموعة من الدروس في ال ADO.Net
قريبا بإذن الله
الموضوع الأول : ال Connection
• ال connection هو المسئول عن الإتصال بين ال Data Source وبيئة ال .net
وهو يتبع ال System.Data namespace
• يدعم ال .net framework نوعين من ال connections وهما OleDbConnection وال SqlConnection وسوف يتم التعامل دائما مع ال Sql في الشرح .
• خصائص ال Connection :
اهمها ال Connection String وهو عبارة عن string يقوم بتوجيه ال Connection كي يتصل بال Data Source .
والصيغة العامة له هي :
"Keyword=Value;Keyword=Value;Keyword=Value"
وبالطبع ال connection string هو أساس ال connection .
- توجد خواص اخري لل connection مثل database وهي تقوم بارجاع اسم ال database .
• عمل connection :
1- في ال design time :
ToolBox > Data > SqlConnection
وفي قائمة ال properties الخاصة بال connection يمكن وضع ال connection string واختياره من خلال اختيار
new connection string
2 - في ال run time :
using SystemData; Sqlconnection MyConnection; MyConnection = new SqlConnection;
وكذلك يمكن تحديد ال Connection string :
MyConnection.ConnectionString = "//put ur connection dtring here//";
• تستخدم ال connection عدد من ال methods مثل :
open,close,CreateCommand
# لاحظ أن استخدام أي من ال open أو ال close methods تجعل ال connection علي هذه الحالة , مثلا :
MyConnection.open(); DataAdapter.Fill(DataSet);
هذا يجعل ال connection علي حالة ال open ولا يقوم بإغلاقه .. والعكس صحيح .
• يوجد حدثين لل connection : اهمها ال StateChange event وهي تعمل عند تغير حالة ال connection من حالة لأخري
وهذه الحالات هي : open,closed,Broken,Connecting,Executing,Fetching
private void MyConnection_StateChange (object sender,StateChangeEventArgs e)
{
// show the original state
MessageBox.Show(e.OriginalState.ToString());
// show the current state
MessageBox.Show(e.currentState.ToString());
}
معذرة علي الخطأ
private void MyConnection_StateChange (object sender,StateChangeEventArgs e)
{
// show the original state
MessageBox.Show(e.OriginalState.ToString());
// show the current state
MessageBox.Show(e.currentState.ToString());
}موعدنا الآن مع الدرس الثاني : ال commands
قلنا أن ال connection عبارة عن الأتصال بين ال data source وبيئة ال .net والذي عن طريقه يتم تبادل البيانات , هذا التبادل للبيانات يتم بتنفيذ من ال commands .
• ال command ببساطة عبارة عن جملة ال SQL التي سيتم تنفيذها أو ال Stored Procedure التي سيرجع لها .
هذا ال command يقوم بتنفيذ كل أنواع العمليات علي ال data source ( ال queries التي تقوم بإرجاع قيم أو ال non-queries التي لا ترجع أي بيانات ) .
• عمل command : عن طريق :-
1 - ال design time : وهي ببساطة سحب SqlCommand من ال data من ال toolBox .
2 - ال run time : وهي تتبع ال SqlClient namespace .
using System.Data.SqlClient; SqlCommand MyCommand; MyCommand = new SqlCommand();
• أهم خواص ال command :
1 - commandText : يحمل جملة ال SQL التي سيتم تنفيذها
MyCommand.CommandText="Select * From Table1";
2 - CommandType : يحدد نوع ال command ... text مثلا أو Stored Procedure
MyCommand.CommandType = CommandType.Text;
3 - Connection : يحدد ال connection الذي يستخدمه ال command
MyCommand.Connection=MyConnection;
كما يوجد ايضا خواص أخري مثل ال transaction و ال parameters
••• ال parameters collection : ويتم اعطائها القيم في 3 خطوات :
1 - تحديد ال parameter في ال query أو ال stored procedure .
2 - تحديد ال parameter في ال parameters collection .
3 -اعطاء قيم لهذه ال parameters .
- كل parameter يتم استخدامه يجب اضافته باستخدام الدالة add :
MyCommand.Parameters.Add(Name,Value);
• أهم ال methods الخاصة بال command :
1 - ExecuteNonQuery : لا تقوم بإرجاع أي row .
2 - ExecuteScalar : تقوم بإرجاع قيمة واحدة .
3 - ExecuteReader : تقوم بإرجاع عدة rows .
مثال لما سبق :
MyCommand.CommandText="Select * From Table1 Where ID=@ID";
MyCommand.CommandType=CommandType.Text;
MyCommand.Connection = MyConnection;
MyCommand.Parameters.Add("@ID",//Value of ID//);
MyConnection.Open();
MyCommand.ExecuteScalar();
MyConnection.Close();to be continued
بداية موفقة وجزاك الله خيرا
الموضوع الثالث ( أو الرابع .. مش فاكر) : ال dataAdapter
• ال DataAdapter عبارة عن المادة اللاصقة بين ال DataSource وبين ال DataSet التي سيتم شرحها لاحقا.
أي أنها تحمل البيانات نت ال data source عبر ال connection object وتعطيها لل DataSet ثم تقوم بحمل التغيرات من ال DataSet لل data source .
* عمل data adapter :
1) من ال desugn time :
أ- من ال server explorer : إذا كنت عامل connection من ال design time فيمكنك عمل drag لل table أو ال view أو ال Strored procedures علي ال form .
ب- من ال ToolBox :
ToolBox > Data > SqlDataAdapter
يظهر لك ال Data Adapter Configuration Wizard
فتقوم بعمل ال connection من خلاله وتكمل عمل ال data adapter .
2) في ال run time :
using System.Data.SqlClient; SqlDataAdapter MyAdapter; MyAdapter=new SqlDataAdapter();
• خواص ال data adapter :
1) ال commands : تحتوي ال DataAdapter علي مجموعة من ال commands لتنفيذ ال insert,update,dalete,select.
- إذا قمت بعمل drag لل table أو ال view أو ال Strored procedures علي ال form من ال server explorer فإن ال .net يقوم بتوليد ال commandText لل DatAdapter commands أوتوماتيكيا . ويمكنك أن تتعامل معها من خلال ال properties windows .
- ومن خلال الكود يمكنك ربط ال commands الخاصة بك بال dataAdapter commands , فمثلا إذا كان لديك SqlCommand اسمه MyCommand يقوم بعمل select من ال DataBase فإنه يمكنك :
MyAdapter.SelectCommand=MyCommand;
ويمكنك ايضا اعطاء ال CommandText مباشرة لل DataAdapter بدون استخدام commands خارجية
SqlDataAdapter da=new SqlDataAdapter("// put the SQL statement here//",MyConnection);2) ال TableMapping :
هي الرابط بين data source وبين ال DataSet ... مثلا بين column1 في table1 في ال data source وبين column1 في table1 في ال DataSet .
• ال methods الخاصة بال DataAdapter :
1- ال Fill method : تقوم بنقل البيانات من ال data source إلي ال DataSet , ولها صيغ عديدة .
MyAdapter.Fill(DataSet);
2- ال Update method : تنقل التغيرات في ال rows في ال DataSet إلي ال data source مرة أخري , ولها ايضا صيغ عديدة
MyAdapter.Update(DataSet);
• الآن مع الدرس الخامس وهو ال Transaction :
قمت بوضع شرح له قبل هذا ::
-------------------------------
* ال transaction عبارة عن مجموعة من العمليات التي يتم التعامل معها علي أنها عملية واحدة
فلا يصح نجاح عملية وفشل الأخري... فالكل ناجح أو الكل فاشل.
والمثال الشهير جدا علي هذه العملية هو عمليتي السحب والإيداع في حسابات البنوك , فعملية السحب اذا تمت ولم تتم عملية الإيداع تضيع النقود وبالتالي تفشل العملية
واذا لم تتم عملية السحب وتمت عملية الإيداع فهناك إهدار للنقود وتصبح العملية كلها فاشلة.
-تستخدم عملية ال transaction في ال ADO.Net نوعين من ال methods :
1 - commit : لتنفيذ عملية ال transaction .
2 - Rollback : للتراجع عن تنفيذ عملية ال transaction .
وعادة ما يتم استخدام هذه ال methods داخل try & catch كما بالمثال التالي .
المثال يستخدم database اسمها test وال tables :
1 - table1 : وبه ID,name columns
2 - table2 : وبه ID,salary columns
using System.Data;
using System.Data.SqlClient;
//اعمل connectionبال database//
string connString = "put ur connection string here";
Sqlconnection connect = new Sqlconnection(connString);
//عرف ال transaction //
SqlTransaction trans = nconnect.BeginTransaction();
// ابدأ التعامل مع ال database بال insert في ال tables //
Sqldataadapter da1 = new Sqldataadapter("Insert Into table1 (ID,name) Values (@ID,@salary",connect);
// لا تنسي وضع قيم ال parameters هنا //
Dataset ds1 = new Dataset();
Sqldataadapter da2 = new Sqldataadapter ("Insert Into table2 (ID,salary) Values (@ID,@salary),connect);
// لا تنسي وضع قيم ال parameters هنا //
Dataset ds2 = new Dataset();
// ربط ال commands بال transaction //
da1.InsertCommand.Transaction = trans;
da2.InsertCommand.Transaction = trans;
try
{
da1.fill(ds1);
da2.Fill(ds2);
// ابدأ بتنفيذ ال transaction //
trans.Commit();
MessageBox.Show("transaction committed , congratulations !! ");
}
catch
{
trans.Rollbach();
MessageBox.Show("transaction rolled back , sorry !!");
}
using System.Data;
using System.Data.SqlClient;
//اعمل connectionبال database//
string connString = "put ur connection string here";
Sqlconnection connect = new Sqlconnection(connString);
//عرف ال transaction //
SqlTransaction trans = nconnect.BeginTransaction();
// ابدأ التعامل مع ال database بال insert في ال tables //
Sqldataadapter da1 = new Sqldataadapter("Insert Into table1 (ID,name) Values (@ID,@salary",connect);
// لا تنسي وضع قيم ال parameters هنا //
Dataset ds1 = new Dataset();
Sqldataadapter da2 = new Sqldataadapter ("Insert Into table2 (ID,salary) Values (@ID,@salary),connect);
// لا تنسي وضع قيم ال parameters هنا //
Dataset ds2 = new Dataset();
// ربط ال commands بال transaction //
da1.InsertCommand.Transaction = trans;
da2.InsertCommand.Transaction = trans;
try
{
da1.fill(ds1);
da2.Fill(ds2);
// ابدأ بتنفيذ ال transaction //
trans.Commit();
MessageBox.Show("transaction committed , congratulations !! ");
}
catch
{
trans.Rollbach();
MessageBox.Show("transaction rolled back , sorry !!");
}-9
جزاكم الله خيرا
والآن مع الدرس الخامس وهو ال DataSet ..
يمكن اعتبار ال DataSet عبارة عن هيكل مقيم في الذاكرة يقوم بحمل ال data وتمثيل ال relations بينها
• انواعها :
1- Typed : تقوم ب "تعرية" ال DataSet من جداولها بحيث يمكن التعامل معها ك object .
ويمكنك التعامل مع هذه ال tables وال cloumns بأسماءها مباشرة :
ex: OrdersDS.OrdersTable[0].IDColumns;
2-Untyped : يمكنك أن تتعامل مع ال tables وال columns عبر ال tables & items collection
OrdersDS.Tables["OrdersTable"].Rows[0].Item("IDColumn");• عمل ال DataSet :
1) في ال Design time :
أ- Typed DataSet :
ِAfter adding DataAdapter > Select it > Data menu > Generate DataSet
ب- Untyped DataSet :
ToolBox> Data > DataSet > drag it to the form
2) في ال run time : وهي تتبع ال System.Data namespace
using System.Data; DataSet My DataSet; MyDataSet=new DataSet();
وتكون ال DataSet المعمولة بالكود من النوع Untyped .
• خواص ال DataSet : معظمها مرتبط بال XML . ويوجد ايضا :
1- Tables collection : يمكن التعامل مع ال tables :
أ) في ال desgin time :
DataSet > Properties window > Relations property > Add
ويعدها يمكن أن تتعامل مع ال tables ويمكنك أن تقوم بإضافة columns جديدة .
ب)في ال rum time :
DataTable MyTable;
MyDayaSet.Tables.Add("MyTable");ويمكنك أن تضيف columns لل table عن طريق :
MyTable.Columns.Add("ID",Type.GetType("System.Int32"));
MyTable.Columns.Add("Name",Type.GetType("System.String"));2- ال data relations : وتصف العلاقة بين الجداول في ال DataSet :
أ) في ال design time :
DataSet > Properties window > Relations property > Add
وبعدها يمكن عمل customization لل relations .
هذه الطريقة تخص ال untyped DataSet فقط
ب) في ال run time :
MyTable.Relations.Add("CustomersOrders",MyDataSet.Tables[0].Columns[0],MyDataSet.Tables[1].Columns[0]);• ال DataSet methods : ايضا معظمها خاصة بال XML , كما توجد ايضا ال clone© methods
1- ال clone : تقوم بعمل نسخة فارغة لل DataSet :
DataSet CloneDS=MyDataSet.Clone();
1-ال Copy : تقوم بعمل نسخة كاملة لل DataSet .
DataSet CopyedDS=MyDataSet.Copy();
انتهي هذا الدرس ...
-waf
الدرس السادس : ال DataTable
قلنا أن ال DataSet عبارة عن تمثيل للبيانات في ال memory
أما ال DataTable تحتوي البيانات الفعلية ..
• عمل ال DataTable :
1) في ال design time :
كما قلنا في إضافي ال tables لل DataSet .
2) في ال rum time : تستخدم ال System.Data namespace
using System.Data; DataTable MyTable; MyTable=new DataTable();
كما يمكن إضافة ال tables لل DataSet باستخدام ال add method
Add(),Add(TableName),Add(DataTAble),so on
MyDataSet.Tables.Add(); or MyDataSet.Tables.Add(MyTable);
• خواص ال DataTable : اهمها ال Columns,Rows,Constraits
1) ال Columns collection :
يمكن عمل column جديد باستخدام ال New method
New(),New(ColumnName),New(ColumnName,dataType),so on
وأهم خواصها : AllowDBNull,AutoIncrement,Caption,ColumnName,DataType,Maxlength
والمثال :
using System.Data;
DataColumn MyColumn;
MyColumn=new DataColumn("Name");
MyColumn.DataType=System.Type.GetType("System.String");
//create table and fill the date from the dataset
MyDataSet.Tables.Add(MyTable);
MyDataAdapter.Fill(MyDataSet.Tables[0]);
//add the column
MyDataSet.Tables["MyTable"].Columns.Add(MyColumn);2) ال Rows collection : تحتوي علي البيانات الفعلية ..
DataRow MyDataRow; MyDataRow=MyDataSet.Tables["MyTable"].NewRow(); MyDataRow[0]="7amama"; MyDataSet.Tables["MyTable"].Rows.Add(MyDataRow);
يوجد خاصية لل rows اسمها RowState وهي تقوم بإرجاع حالة ال row :
Added,Deleted,Detqached,Modified,Changed
MessageBox.Show(MyDataRow.RowState.Tostring());
• ال DataTable methods :
Copy,Clone,Clear,Select,etc.
-خاصية ال select تقوم بعمل filtering لل rows دون تغيير في ال table نفسه
DataRow drFound;
drFound=MyDataSet.Tables["MyTable"].Select("Name like 'A*'");
foreach (DataRow dr in drFound)
{
MessageBox.Show(dr[0]);
}وهذا الكود يقوم بعمل select من column اسمه Name لكل ما يبدأ بحرف A ووضعها في DataRow array
• ال DataTable methods :
ColumnChanged,ColumnChanging,RowChanged,RowChanging,RowDeleted,RowDeleting
يتبع,
بارك الله ووفقك لما فيه الخير
جزاك الله خيرا
Name : Ahmed H. Alawady
Web Site : Alawady.info
Email : alawady_ahmed@hotmail.com
Tel : +2 012 345 6808
يعطيك العافيه اخوي C#please شرح رائع وجميل قمة في الإبداع ونسأل الله العلي العظيم ان يجعل هذد الدروس التي تقدمها
لنا بالمجان في ميزان حسناتك والى الأمام
احب ان أقدم الى جميع الأعضاء في المنتدى برنامج بسيط لصيدله ولقد قمت بكتابته بالسي شارب بالإضافه الى ADO.NET وقاعدة البيانات بالأكسس
ملاحظه : كتبت البرنامج باستخدام Microsoft Visual Studio 2005 وهو يحتوي على منصة dotNetFramWork 2.0
فلا أعلم اذا كان البرنامج سيشتغل بالشكل الصحيح على منصة dotNetFramWork 1.1 الموجوده في Microsoft Visual Studio 2003
وكنت اتمنى لو استطيع ان أقوم بشرح البرنامج بالكامل لإن ارى ان هذا ابسط شيء اقدمه لإخواني الأعزاء في هذا المنتدى ولكن نظرا
لضيق الوقت لم أتمكن
ولكن اذا استعصى على احد الأعضاء فهم جزئيه معينه من البرنامج يرسل الجزء الذي لم يفهمه وسأقوم بشرحه بإذن الله
البرنامج موجود في المرفقات
أسأل الله العفو والعافيه
وآسف على الإطاله
أخي الحقباني والأخ أحمد ... جزاكم الله خيرا
الدرس السابع : ال DataView
-ال DataView هي وسيلة تمكننا من عمل filtering و sorting لل DataRows .
بمعني إذا كان عندي DataTable به عدد من ال rows فإنه يمكنني أن اعمل filtering أو sorting لهذه ال rows باستخدام ال DataView .
- كنا قد استخدمنا ال Select method الخاصة بال DataTable في الدرس السابق .... حسنا ..ال DataView تقوم بنفس ما قامت به ال Select method غير أنها عنصر منفصل يمكن عمله في ال design time أو ال rum time كما يمكن التعامل معها ك DataTable .
• عمل ال DataView :
1- في ال Design time :
ToolBox>Data>DataView
ويمكنك من نافذة ال properties ضبط خواص ال Table وال sort لكي تعمل sorting لما تريد
2- في ال Run time :
بافتراض أن عندي Table اسمه OrderTable في ال MyDataSet , وأقوم بعمل loading لأسماء العملاء في ListBox ..
اريد أن اقوم باختيار عميل من ال ListBox فيقوم بعمل filtering لهذا ال Table من حيث اسم العميل ويضغ الناتج في DataGrid .. هذا الكود يقوم بعمل ما قلنا :
using System.Data; DataRowView drCurrent; DataView MyDataView; MyDataView=new DataView(); //make the drCurrent equals the selected client drCurrent=(DataRowView)ClientListBox.SelectedItem; //set the table for the DataView MyDataView.Table=MyDataSet.OrdersTable; //make filtering for the DataView according to the client name MyDataView.RowFilter="CustomerID='"+drCurrent[0]+"'"; // fill the results in the DataGrid MyDataGrid.DataSource=MyDataView
• خواص ال DataView :
- AllowDelete,AllowEdit,AllowNew ----> تحدد إمكانية تغيير ال data القادمة عبر ال DataView أم لا .
- Count -----> ترجع عدد ال DataRows في ال DataView
- RowFilter,Sort,RowStateFilter ------> تتحكم في ال Data القادمة عبؤ ال DataView .
1) RowFilter : كما في المثال السابق
2) Sort :
MyDataView.Sort="EmployeeID";
تقوم بعمل sorting من خلال ال EmployeeID تصاعديا ( لأن التصاعدي هو ال Default)
3) ال RowStateFilter : تقوم بعمل filtering لل rows حسب حالتها :
MtDataView.RowStateFilter=DataViewRowState.Added;
فيقوم بإرجاع ال rows التي تم أضافتها موخرا
• ال DataView methods :
AddNew,Delete,Find
- Find : يقوم بعمل بحث عن ال rows عبر ال Primary key
DataRow [] FoundRows = MyDataView.Find(200);
فيقوم بارجاع ال rows التي لها ID = 200 , ويضعها في ال DataRow array
جزاكم الله خيرا
شكرا جزيلا لك على هذه الدروس الرائعة ;)
ونتمنى أن تقوم بارفاق أمثلة
سأحاوا إرفاق أمثلة رغم أن هذه النقطة صعبة بالنسبة لي الآن
ربنا يسهل
هذا الموضوع هو من أفضل المواضيع التي قرأتها في ال ADO.Net
وهو موضوع ال Expressions ... وهو عبارة عن string يتم استخدامه من قبل ال DataView ويتم من خلاله عمل Filtering أو Sorting لل Rows .
ففي الدرس السابق استخدمنا الكود التالي :
MyDataView.RowFilter="CustomerID='"+drCurrent[0]+"'";
فالجزء :
CustomerID= ' " + drCurrent[0]+" ' "
هو ما اعنيه بال Expression , وكما نري استخدمنا هذا ال Expression لعمل Filtering لل Rows .
• هذه ال strings يتم معاملتها ك String عادي جدا , أي انه خاضع لكل ما يخضع له ال String العادي , فمثلا يمكن عمل concatinate له :
MyExpression="MyColumn=' "+Column[0]+" ' ";
• ولهذه ال Expressions مجموعة من القواعد :
1) الأحرف الخاصة Special characters يتم تضمينها في square brackets : [ ]
MyExpression="[Miles/Gallons]>10";
2) قيم التاريخ Date يتم احاطتها ب hash : #
MyExpression="OrderDate>#08/24/1986#";
لاحظ أن كتابة التاريخ يتم بال american format :
mm/dd//yy
3) يمكن استخدام ال aggregate functions مثل ال :
sum,count,min,max,......,etc
4) يمكن استخدام قيم المقارنة Comparing :
AND,OR,NOT,<,>,<=,>=,<>,LIKE,IN
• IN : قيمة تساوي مجموعة من القيم :
MyExpression="MyColumn IN ('A','B','C')";• LIKE : مقارنة غير متطابقة :
MyExpression="Name LIKE 'A*'";
5) يمكن استخدام العمليات الحسابية Arithemtic operations :
+ , - , * , / , %
بالطبع الموضوع أكبر من هذا بكثير لكني حاولت تجميع المحاور الرئيسية ... ارجو الإضافة لمعلومات جديدة
جزاكم الله خيرا
إخواني
بهذا نكون قد أكملنا المرحلة الأولي لكنني لم أجد اضلفات أو تعليقات أو استفسارات ...
هل أكمل أم ماذا ؟؟؟؟؟
السلام عليكم ورحمة الله وبركاتة
جزاك الله كل خير على موضوع الشيق ياريت حضرتك تكمل لا ن اسلوبك سلس جدا وربنا يوفقك ان شاء الله
إن شاء الله هكمل
بس الأيام ده أنا مشغول شوية في الإمتحانات
ربنا يسهل
جزاكم الله خيرا
لا إله إلا الله وحده لا شريك له له الملك و له الحمد يحى و يميت و هو على كل شيء قدير
يا سلالالالالالالالالام عليك تسلم ااااااااااااااااااااااااااااااااااااااااايديك

A coward dies a thousand deaths, a soldier just dies the once
هذا الموضوع مغلق.