الفصل السادس أساسيات التعامل مع قواعد البيانات في هذا الفصل إنشاء قاعدة بيانات استخدام األداة SqlDataSource عرض البيانات من الجدول فلترة البيانات التعامل البرمجي مع قواعد البيانات
أساسيات التعامل مع قواعد البيانات ف هذا الفصل سنخطو معا الخطوة األولى نحو التعامل مع قواعد الب انات من خالل ASP.NET وذلك بهدف بناء مواقع د نام ك ة المحتوى. سنقوم بالبدا ة بإنشاء قاعدة ب انات بس طة وملئها ببعض الب انات لتطب ق تمار ن هذا الفصل عل ها, ح ث سنتعلم ك ف ة عرض الب انات من الجدول على صفحة االنترنت, كما سنتعلم ك ف ة تطب ق عمل ات اإلضافة والحذف والتعد ل على الب انات من خالل األكواد البرمج ة. إنشاء قاعدة بيانات سنقوم بالبدا ة بإنشاء قاعدة ب انات بس طة من النوع SQL Server وذلك لنتمكن من تطب ق تمار ن هذا الفصل عل ها, ابدأ بإنشاء موقع جد د, ثم من القائمة File اختر New File ثم اختر SQL. Add ثم اضغط على MyDatabase.mdf و سمها Server Database ستظهر رسالة تخبرك بأنه س تم وضع قاعدة الب انات ضمن المجلد App_Data.) Yes( اضغط على نعم
وبالتال ستجد ف القسم Solution Explorer أنه تم إضافة المجلد App_Data وبداخله قاعدة الب انات. MyDatabase ننقر عل ها نقرا مزدوجا ل تم االنتقال إلى القسم. Server Explorer ننقر نقرة م ن ة على المجلد Tables ونختار Add New Table, ونض ف الحقول بالشكل التال : Column Name Id Name Mark Data Type int Nvarchar(50) int Allow Nulls No No Yes ونحدد الحقل Id كمفتاح أساس ف الجدول, و تم ذلك عبر نقرة م ن ة على السهم الصغ ر على سار الحقل Id واخت ار Set Primary Key كما هو واضح ف الصورة التال ة :
كما نقوم بجعل هذا الحقل أخذ ق مه بشكل تلقائ ( وذلك لتجنب إدخال ق م مكررة لحقل المفتاح األساس ) ح ث نقوم بتفع ل الخاص ة Is Identity التابعة للحقل Id كالتال :. MyTable نقوم بحفظ الجدول السابق ( من القائمة File نختار Save Table1 نجري نقرة م ن ة على هذا الجدول ونختار Show Table Data ) ونعط ه االسم
نقوم بملئ الجدول ببعض الب انات ثم نغلقه ( ل س بالضرورة كما ف الصورة التال ة ). وبهذا نكون قد انته نا من إعداد قاعدة ب انات بس طة وأصبحنا جاهز ن لتطب ق فقرات هذا الفصل. استخدام األداة SqlDataSource تمكننا األداة SqlDataSource من تمث ل قواعد الب انات ف صفحات الو ب بسهولة و سر, فف أغلب الحاالت تم استخدام هذه األداة إلدارة قواعد الب انات وبدون كتابة سطر برمج واحد. تم استخدام األداة SqlDataSource لتمث ل االتصال بقاعدة الب انات و إعداد األوامر الت ستنفذ على ب اناتها, عموما األداة SqlDataSource تستط ع التعامل مع نظم إدارة قواعد الب انات التال ة :
Microsoft SQL Server Microsoft SQL Server Express Microsoft Access Oracle DB2 MySQL وفضال عما سبق ف مكن التعامل مع أي قاعدة ب انات عالئق ة باستخدام األداة. SqlDataSource إذا فإن هذه األداة ه جسر للوصول للب انات و تم استخدامها مع أدوات أخرى لعرض وتحر ر الب انات مثل GridView, FormView وغ رهم. تعتبر األداة SqlDataSource غ ر مناسبة عند إنشاء تطب قات متعددة الطبقات multi-tier وذلك ألنها تدمج طبقة الب انات مع طبقة العرض, وف هذه الحالة نقوم باستخدام األداة ObjectDataSource والت سنناقشها بالتتفص ل ف فصل الحق. إنشاء االتصال بقاعدة البيانات بشكل افتراض فإن األداة SqlDataSource معدة للتعامل مع قواعد الب انات Microsoft SQL. ADO.NET االفتراض لها ) Provider ( اإلصدار السابع ومابعد, و كون البروفا در Server قم بإضافة صفحة جد دة إلى الموقع, ثم أضف عل ها األداة SqlDataSource وذلك من القسم Data ضمن ال. ToolBox نضغط على السهم الصغ ر لألداة ( SqlDataSource و دعى )Smart Tag, ونضغط على Configure Data Source كما هو واضح ف الصورة التال ة : تظهر لنا نافذة الخت ار قاعدة الب انات الت نر د االتصال بها, نختار القاعدة, MyDatabase
وبهذا نكون قد حددنا مصدر الب انات, إن هذه الخطوة تكافئ كتابة الكود التال : كود #C DataSource=.\SQLEXPRESS;AttachDbFilename= DataDirectory \MyDatabase.mdf;Integrated Security=True;User Instance=True والذي سنناقشه الحقا. نضغط على, Next تظهر نافذة لنقرر إن كنا نر د تخز ن هذه االتصال وما االسم الذي نر د أن نسم ه به, نختار االسم MyConnectionString ثم نضغط على Next
تظهر نافذة جد دة وف ها الجداول الموجودة ف قاعدة الب انات, ح ث س تم عرض الجدول الوح د الموجود ف القاعدة الت أنشأناها, نترك اإلعدادات كما ه ونضغط على. Next
تم عبر النافذة السابقة تحد د الب انات الت س تم جلبها من قاعدة الب انات, ف القسم األول نحدد إن كنا سنستقبل الب انات من إجراء مخزن Stored Procedure أو عبارة SQL نقوم ببنائها باستخدام Views أما الخ ار الثان وهو االفتراض, ف قوم بعرض الجداول والمناظ ر, Query Builder الموجودة ف قاعدة الب انات ل تم جلب الب انات منها. ف القسم الثان من النافذة نحدد الجدول أو المنظور المطلوب ثم نختار األعمدة الت نر د جلبها. ف القسم الثالث نالحظ وجود عدة خ ارات, إن تفع ل الخ ار Return only uniqe rows ؤدي إلى عدم حدوث تكرار ف الب انات المسترجعة هذا إن كان مصدر الب انات حتوي على أسطر مكررة ( عموما إن وجودة مفتاح أساس ضمن عدم تكرار ب انات الجدول ), الزر WHERE لتحد د شرط تم تطب قه على الب انات وبالتال تم إرجاع األسطر الت تحقق هذا الشرط. مثال السترجاع ب انات الطالب الذ ن حصلوا على عالمة أكبر من, 08 نضغط على الزر WHERE لتظهر لنا النافذة التال ة :
ح ث نقوم بالبدا ة بتحد د العمود الذي س تم تطب ق الشرط عل ه, ثم نحدد معامل الشرط ( ساوي, ال ساوي, أكبر, أصغر... ), ثم نحدد مصدر الق مة الت س تم استخدامها ف الشرط ( مثال من ملف cookies أو غ ر ), عند اخت ار None توجب عل نا إدخال ق مة ثابتة وبشكل مباشر وذلك ضمن الحقل. Value بعد تحد د جم ع أقسام عبارة Where نضغط على الزر Add لتتم إضافة ذلك الشرط. ( إن الب انات المحددة ف الصورة السابقة تقوم بإرجاع ب انات الطالب الذ ن حصلوا على عالمة أكبر أو تساوي ) 08. نغلق هذه النافذة لنعود إلى النافذة Configure Data Source. الزر ORDER By وذلك لترت ب الب انات المسترجعة حسب عمود ما, مثال استرجاع ب انات الطالب مرتب ن أبجد ا حسب االسم.
Descending ترت ب تنازل. Ascending تعن ترت ب تصاعدي سواءا كان رقم أو أبجدي, نغلق هذه النافذة لنعود إلى النافذة. Configure Data Source الزر Advamced لتفع ل إمكان ة إضافة وتعد ل وحذف الب انات من وإلى المصدر المحدد.
ال تقم بتفع ل الخ ار ن السابق ن ف هذا المثال, نغلق هذه النافذة لنعود إلى النافذة Configure Test Query ثم ف النافذة الت تل ها اضغط على Next ونضغط على الزر. Data Source لنتأكد من نجاح االتصال مع قاعدة الب انات ثم اضغط على. Finish وبهذا نكون قد أنه نا إعداد األداة SqlDataSourec وأصبحت بمثابة وس ط لالتصال مع قاعدة الب انات وجلب المعلومات منها وتنف ذ األوامر عل ها كما سنرى ف فقرات الحقة, ولكنها التقوم بعرض الب انات بمفردها. نفتح الكود الصفحة السابقة, جب أن كون مشابها للكود التال : كود ASP.net <div> </div> <asp:sqldatasource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" SelectCommand="SELECT * FROM [MyTable]"></asp:SqlDataSource>
نالحظ من الكود السابق أن الخاص ة ConnectionString MyConnectionString ولكن أ ن تم تخز ن عبارة االتصال هذه قد أخذت الق مة تم تخز ن إعدادات االتصال ضمن الملف web.config وذلك لعدة أسباب : األمن و الحما ة. سهولة التعامل : بالتأك د فإن إضافة عبارة االتصال ضمن ملف واحد أسهل بكث ر من إضافتها إلى كل صفحة ضمن الموقع, وبالتال عندما نر د إجراء تعد ل ما عل ها فإننا نعدل ف مكان واحد فقط. األداء : ح ث ساهم تخز ن عبارة االتصال ف الملف web.config بأداء أفضل لمجمع االتصاالت على الس رفر ( Pool ) Connections. نفتح الملف web.config لنجد ف ه الكود التال : كود XML <configuration> <connectionstrings> <add name="myconnectionstring" connectionstring="data Source=.\SQLEXPRESS;AttachDbFilename= DataDirectory \MyDatabase.mdf;Integrated Security=True;User Instance=True" providername="system.data.sqlclient" /> </connectionstrings> <system.web> <compilation debug="false" targetframework="4.0" /> </system.web> </configuration> إن عبارة االتصال السابقة معدة للعمل فقط على الجهاز المحل, Local و جب تعد لها عند رفع الموقع على االنترنت, ح ث تقوم شركة االستضافة تزو دك بعبارة االتصال وفقا إلعداداتهم الخاصة. قم بإضافة أداة GridView إلى الصفحة الت أنشأناها مسبقا, واجعل ق مة الخاص ة DataSourcrId= sqldatasource1, قم بتنف ذ الصفحة ل تم عرض ب انات الجدول ضمن األداة ( GridView والت سنتطرق للتعامل معها بالتفص ل ف فصل الحق ).
فلترة البيانات تدعم األداة SqlDataSource خاص ة الفلترة FilterExpression والت تمكننا من تحد د شرط ما على الب انات الت نرغب بالحصول عل ها من قاعدة الب انات, وهذا ماندعوه بالفلترة, بالعودة إلى الصفحة السابقة, وعلى فرض أن عدد الطالب أصبح كب را وأنت بحاجة للبحث عن طالب مع ن فك ف نقوم بذلك عبر الخاص ة FilterExpression ما سنقوم بعمله هو صفحة مشابهة للصفحة التال ة, ح ث قوم المستخدم بكتابة اسم طالب ما ضمن األداة TextBox1 ثم الضغط على زر " بحث " ل تم عرض ب انات الطالب الذ ن حملون ذلك االسم. أنشئ صفحة جد دة, قم بإضافة أداة TextBox1 و, Button1 أضف أداة SqlDataSource كما تعلمنا ف الفقرة السابقة, انتقل إلى وضع الكود وقم MyTable واربطها مع الجدول باإلضافات التال ة : كود ASP.net <div> <asp:sqldatasource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" SelectCommand="SELECT * FROM [MyTable]" FilterExpression="Name LIKE '{0}%'" > <FilterParameters> <asp:controlparameter Name="stdName" ControlID="TextBox1" PropertyName="TEXT" />
شرح الكود المضاف : </FilterParameters> </asp:sqldatasource> /> "بحث"= Text <asp:button ID="Button1" runat="server" <asp:textbox ID="TextBox1" runat="server"></asp:textbox> <br /> </div> قمنا ف البدا ة بإضافة خاص ة الفلترة FilterExpression وأعط ناها الق مة : {0} LIKE Name وهو عبارة عن تعب ر, SQL الخت ار األسماء المشابهة للبارامتر الممرر )أي عمل ة فلترة على أساس االسم ), أما الرمز {0} ف دل على رقم البارامتر الذي س تم استخدامه ( ح ث بدأ الترق م ابتداءا من الصفر ). قمنا بعد ذلك بتحد د البارامتر ( وهو الق مة المدخلة ف ) TextBox1 ح ث صرحنا بالبدا ة عن قسم بارامترات عبر الوسم <FilterParameters> ثم قمنا بإضافة بارامتر من النوع أداة تحكم وإعطائه االسم stdname ثم قمنا بتحد د األداة الت سنأخذ منها البارامتر وه TextBox1 وتحد د الخاص ة المعن ة وه. Text أخ را, قم بإضافة األداة GridView واجعل ق مة الخاص ة DataSourceId تساوي الق مة, SqlDataSource1 قم بتنف ذ الصفحة, واكتب حرف ما ثم اضغط على الزر بحث ل تم عرض جم ع الطالب الذ ن تبدأ أسماؤهم بذلك الحرف, جرب كتابة اسم طالب بالكامل وابحث. مالحظة ف الصفحة السابقة قمنا بتحد د نوع البارامتر على أنه أداة تحكم <asp:controlparameter.. وذلك ألننا سنقوم بكتابة البارامتر ضمن أداة تحكم )وقد كانت )TextBox, وجد العد د من أنواع البارامترات األخرى والت تمكننا من أخذ ق مة البارمتر من ملف Cookies أو من ملف الجلسة Session أو من عنوان الصفحة QueryString وخ ارات أخرى وسنتحدث عنها ف فصول الحقة إن شاء هللا. العمليات التي تدعمها األداة SqlDataSource تدعم األداة SqlDataSource العمل ات األربع األساس ة الت تم تنف ذها على الب انات : إضافة, حذف, تعد ل, اخت ار. وذلك عبر الخصائص التال ة : InsertCommand DeleteCommand UpdateCommand SelectCommand
سنقوم بتطب ق مثال بس ط للتعرف على الخصائص السابقة, أضف صفحة جد دة وأضف عل ها أداة SqlDataSource وقم بربطها مع الجدول MyTable كما تعلمنا ف الفقرة السابقة, ولكن قم بتفع ل الخ ار Generate Insert, Update, and Delete statements كما ف الصورة التال ة ثم نكمل باق الخطوات كالمعتاد, بعد ذلك صبح كود الصفحة بالشكل التال : كود ASP.net <div> <asp:sqldatasource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" DeleteCommand="DELETE FROM [MyTable] WHERE [Id] = @Id" InsertCommand="INSERT INTO [MyTable] ([Id], [Name], [Mark]) VALUES (@Id, @Name, @Mark)" SelectCommand="SELECT * FROM [MyTable]"
UpdateCommand="UPDATE [MyTable] SET [Name] = @Name, [Mark] = @Mark WHERE [Id] = @Id"> <DeleteParameters> <asp:parameter Name="Id" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:parameter Name="Id" Type="Int32" /> <asp:parameter Name="Name" Type="String" /> <asp:parameter Name="Mark" Type="Int32" /> </InsertParameters> <UpdateParameters> <asp:parameter Name="Name" Type="String" /> <asp:parameter Name="Mark" Type="Int32" /> <asp:parameter Name="Id" Type="Int32" /> </UpdateParameters> </asp:sqldatasource> </div> ح ث نالحظ إضافة عبارات SQL الخاصة بعمل ات اإلضافة الحذف والتعد ل واالستعالم من الجدول المحدد وإسناد كل عبارة للخاص ة المقابلة لها ف األداة, SqlDataSource كما ظهر التصر ح عن البارامترات الت جب تمر رها لعبارات, SQL فعندما نر د حذف سجل ما من الجدول كف تمر ر Id ذلك السجل, ولذلك فإن القسم <DeleteParameters> حتوي على بارامتر واحد فقط, أما عندما نر د إضافة سجل جد د فنحن بحاجة لكامل الق م وه ف مثالنا هذا ثالث ق م ( Mark ) Id, Name, ولذلك تم تمر ر ثالث بارامترات لعبارة اإلضافة Insert وذلك ضمن القسم <InsertParameter>. لرؤ ة ك ف ة عمل الخصائص السابقة نقوم بإضافة األداة DetailsView إلى الصفحة ونضبط خصائصها كالتال : الخاص ة DataSourceID AutoGenerateDeleteButton AutoGenerateEditButton AutoGenerateInsertButton AutoGenerateRows AllowPaging الق مة SqlDataSource1 True True True False True
ال تقلق من األداة DetailsView فسنأت على شرحها وبالتفص ل ف فصل قادم إن شاء هلل. إنما الهدف من اسخدامها هنا فقط لتوض ح عمل خصائص األداة, SqlDataSource بعد ضبط ق م الخصائص السابقة كما هو محدد بإمكاننا تنف ذ الصفحة وتجربة إضافة سجالت جد دة على الجدول وحذف والتعد ل على سجالت سابقة. أما كود الصفحة ف صبح كامال بالشكل التال : كود ASP.net <div> <asp:sqldatasource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" DeleteCommand="DELETE FROM [MyTable] WHERE [Id] = @Id" InsertCommand="INSERT INTO [MyTable] ([Id], [Name], [Mark]) VALUES (@Id, @Name, @Mark)" SelectCommand="SELECT * FROM [MyTable]" UpdateCommand="UPDATE [MyTable] SET [Name] = @Name, [Mark] = @Mark WHERE [Id] = @Id"> <DeleteParameters> <asp:parameter Name="Id" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:parameter Name="Id" Type="Int32" /> <asp:parameter Name="Name" Type="String" /> <asp:parameter Name="Mark" Type="Int32" /> </InsertParameters> <UpdateParameters> <asp:parameter Name="Name" Type="String" /> <asp:parameter Name="Mark" Type="Int32" /> <asp:parameter Name="Id" Type="Int32" /> </UpdateParameters> </asp:sqldatasource> <asp:detailsview ID="DetailsView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateInsertButton="True" AutoGenerateRows="False" AllowPaging="True" DataKeyNames="Id" > <Fields> <asp:boundfield DataField="Id" HeaderText="Id" ReadOnly="True" SortExpression="Id" /> <asp:boundfield DataField="Name" HeaderText="Name" SortExpression="Name" /> <asp:boundfield DataField="Mark" HeaderText="Mark" SortExpression="Mark" /> </Fields> </asp:detailsview> </div>
قم بتنف ذ الصفحة السابقة, وجرب إجراء العمل ات المختلفة على الب انات, قم بتعد ل المثال السابق واستخدم األداة GridView عوضا عن. DetailsView التعامل البرمجي مع قواعد البيانات من النقاط الهامة عند بناء موقع د نام ك ه معرفة إدارة قواعد الب انات بشكل برمج, على العموم فإن الكود البرمج س كون مألوف لمبرمج تطب قات.NET, سأكتف خالل هذه الفصل بعرض مثال ن األول عن ك ف ة اإلضافة لقاعدة الب انات, والثان االستعالم عن الب انات, وبالتال س كون بإمكان المطور أن كتب توابع التعد ل والحذف وغ رها بسهولة كب رة فالموضوع تعلق بلغة SQL أكثر من تعلقه بتقن ة ال.NET سنقوم بإضافة صف جد د ( Class ), من القائمة File اختر New ثم ( File أو ببساطة اضغط على ) CTRL+N, ثم حدد Class وقم بتسم ته Students.vb ( Students.cs لمبرمج الف جوال ب سك ). ستظهر رسالة تخبرك بأنه س تم وضع الصف الجد د داخل مجلد دعى App_Code فاضغط على نعم, هذا الصف الجد د س حتوي على التوابع الت تقوم بالتعامل مع قواعد الب انات, ح ث من األفضل عدم كتابتها ف كود الصفحة. الخطوة األولى تكون ف استدعاء فضائات العناو ن المسؤولة عن التعامل مع قواعد الب انات.
كود #C using System.Data; using System.Data.SqlClient; using System.Configuration; كود VB Imports System.Data Imports System.Data.SqlClient Imports System.Configuration إن فضاء العناو ن System.Configration إعدادات الموقع والتعامل مع ملف اإلعدادات مع قاعدة الب انات. ل س للتعامل مع قواعد الب انات, إنما ستخدم لضبط. web.config والذي حتوي على عبارة االتصال نقوم بته ئة بان الصف ل صبح الكود بالشكل التال : كود #C using System; using System.Data; using System.Data.SqlClient; using System.Configuration; public class Students { SqlConnection con; SqlCommand mycommand; string connectionstring; } public Students() { con = new SqlConnection(); connectionstring = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString; con.connectionstring = connectionstring; mycommand = new SqlCommand(); mycommand.connection = con; }
كود VB Imports System.Data Imports System.Data.SqlClient Imports System.Configuration Public Class Students Private con As SqlConnection Private mycommand As SqlCommand Private connectionstring As String Public Sub New() con = New SqlConnection() connectionstring = ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString con.connectionstring = connectionstring mycommand = New SqlCommand() mycommand.connection = con End Sub End Class ح ث إن عبارة االتصال مع قاعدة الب انات MyConnectionString الملف. web.config جب أن تكون مخزنة ف كود XML <configuration> <connectionstrings> <add name="myconnectionstring" connectionstring="data Source=.\SQLEXPRESS;AttachDbFilename= DataDirectory \MyDatabase.mdf;Integrated Security= True;User Instance=True" providername="system.data.sqlclient"/> </connectionstrings>.. </configuration>
باإلمكان االستعانة باألداة SqlDataSourse لتقوم بتخز ن عبارة االتصال ف الملف السابق دون عناء كتابتها بشكل دوي كما تعلمنا ف فقرات سابقة. نقوم اآلن بكتابة التابع المسؤول عن إضافة الب انات إلى الجدول MyTable بالشكل التال : كود #C public string addstudents(string stdname, int stdmark) { try { string mysql = "insert into mytable(name,mark) values ( @sname, @smark )"; mycommand.parameters.clear(); mycommand.parameters.addwithvalue("@sname", stdname); mycommand.parameters.addwithvalue("@smark", stdmark); mycommand.commandtext = mysql; } con.open(); int recs; recs = mycommand.executenonquery(); con.close(); return recs + " row added successfuly."; } catch (Exception ex) { if (con.state!= ConnectionState.Closed) con.close(); return ex.message; } كود VB Public Function addstudents(byval stdname As String, ByVal stdmark As Integer) As String Try Dim mysql As String = "insert into mytable(name,mark) values ( @sname, @smark )" mycommand.parameters.clear() mycommand.parameters.addwithvalue("@sname", stdname) mycommand.parameters.addwithvalue("@smark", stdmark) mycommand.commandtext = mysql con.open() Dim recs As Integer recs = mycommand.executenonquery() con.close() Return recs & " row added successfuly." Catch ex As Exception
If con.state <> ConnectionState.Closed Then con.close() End If Return ex.message End Try End Function اآلن أصبح بإمكاننا إنشاء الصفحة الت تقوم باستدعاء التابع السابق. أضف صفحة جد دة و أضف عل ها أدات ن من النوع TextBox و زر واحد ( Button ) وأداة Lable واحدة, وف حدث النقر على الزر اكتب الكود التال : كود #C protected void Button1_Click(object sender, EventArgs e) { Students std = new Students(); string name=textbox1.text; int mark=int.parse(textbox2.text); string result= std.addstudents(name, mark); Label1.Text = result; } كود VB Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click End Sub Dim std As New Students() Dim name As String = TextBox1.Text Dim mark As Integer = Integer.Parse(TextBox2.Text) Dim result As String = std.addstudents(name, mark) Label1.Text = result ح ث قمنا بإنشاء غرض std من الصف Students ثم قمنا بتنف ذ التابع addstudents نبق كود الصفحة خال ا من األكواد الت تتعامل بشكل مباشر مع قاعدة الب انات. وبهذا كود الصفحة :
كود ASP.net <div> Nmae : <asp:textbox ID="TextBox1" runat="server" /> <br /> Mark : <asp:textbox ID="TextBox2" runat="server" /> <br /> <asp:button ID="Button1" runat="server" Text="add" onclick="button1_click" /> <hr /> <asp:label ID="Label1" runat="server" Text="" /> </div> قم بتنف ذ الصفحة و راقب قاعدة الب انات. مكن تنف ذ عمل ات التعد ل و الحذف بشكل مشابه جدا للتابع السابق مع فرق تغ ر عبارات ال. SQL نعود اآلن إلى الصف Students لكتابة تابع قوم باالستعالم من قاعدة الب انات, ح ث نمرر له رقم الطالب كبارامتر و ع د لنا العالمة الت حصل عل ها. كود #C int getstudentmark(string stdid) { int mark = -1; try { string mysql= "select mark from MyTable WHERE id = @id "; mycommand.parameters.clear(); mycommand.parameters.addwithvalue("@id", stdid); mycommand.commandtext = mysql; } con.open(); SqlDataReader dr; dr = mycommand.executereader(); while (dr.read()) { mark = int.parse(dr.getvalue(0).tostring()); } con.close(); } catch (Exception ex) { if (con.state!= ConnectionState.Closed) con.close(); } return mark;
كود VB Private Function getstudentmark(byval stdid As String) As Integer Dim mark As Integer = -1 Try Dim mysql As String = "select mark from MyTable WHERE id = @id " mycommand.parameters.clear() mycommand.parameters.addwithvalue("@id", stdid) mycommand.commandtext = mysql con.open() Dim dr As SqlDataReader dr = mycommand.executereader() While dr.read() mark = Integer.Parse(dr.GetValue(0).ToString()) End While con.close() Catch ex As Exception If con.state <> ConnectionState.Closed Then con.close() End If End Try Return mark End Function اترك لك عز زي المطور إنشاء الصفحة الت تقوم باستدعاء التابع السابق. الخاتمة إلى هنا نأت إلى نها ة هذا الفصل, والذي خطونا به الخطوة األولى نحو قواعد الب انات ضمن ب ئة الدوت نت, وجد العد د من األدوات الجاهزة والمخصصة للعمل مع قواعد الب انات مثل GridView و FormView وغ رهم العد د, و سنناقش كل منهم بشكل مفصل خالل الفصول القادمة إن شاء هللا. لتحم ل جم ع أجزاء هذه السلسلة المتوفرة حتى اآلن : https://www.mediafire.com/folder/u44z9omx9ajjv/asp.net http://www.4shared.com/folder/i34_lco0/asp.html m-hajjkhalaf@hotmail.com http://www.facebook.com/mohammed.hajkhalaf محمد عمر الحاج خلف سور ا للتواصل :