يوفر ADO.NET جسرًا بين عناصر التحكم الأمامية وقواعد البيانات الخلفية. تقوم كائنات ADO.NET بتغليف كافة عمليات الوصول إلى البيانات وعناصر التحكم التي تتفاعل مع كائنات عرض البيانات. وبالتالي يتم إخفاء تفاصيل حركة البيانات.
يوضح الرسم البياني التالي كائن ADO.NET ككل:
تمثل مجموعة البيانات مجموعة فرعية من قاعدة البيانات. ليس لديه اتصال مستمر بقاعدة البيانات. مطلوب إعادة الاتصال من أجل ترقية قاعدة البيانات. تتضمن DataSet كائنات DataTable وDataRelation. تمثل كائنات DataRelation العلاقة بين جدولين.
الجدول التالي هو بعض الخصائص الهامة لفئة DataSet:
ملكية | يصف |
---|---|
حساسية الموضوع | الإشارة إلى ما إذا كانت السلسلة المراد مقارنتها بجدول البيانات حساسة لحالة الأحرف. |
حاوية | احصل على مساحة للمكون. |
اسم مجموعة البيانات | الحصول على أو تعيين اسم مجموعة البيانات الموجودة. |
DefaultViewManager | إرجاع طريقة عرض البيانات الموجودة في مجموعة البيانات. |
وضع التصميم | يشير إلى ما إذا كان المكون في وضع التصميم. |
فرض القيود | يشير إلى ما إذا كان يتم احترام القيود عند محاولة تحميل ملف. |
الأحداث | احصل على قائمة معالجات الأحداث المتعلقة بهذا المكون. |
خصائص ممتدة | يحصل على مجموعة من معلومات المستخدم المخصصة المتعلقة بمجموعة البيانات. |
يحتوي على أخطاء | الإشارة إلى ما إذا كان هناك أي أخطاء. |
تمت التهيئة | يشير إلى ما إذا كان قد تم تهيئة DataSet أم لا. |
لغة | الحصول على أو تعيين المعلومات المستخدمة لمقارنة السلاسل مع الجدول. |
مساحة الاسم | الحصول على أو تعيين مساحة الاسم لمجموعة البيانات. |
بادئة | الحصول على أو تعيين بادئة XML التي تعتبر اسمًا مستعارًا لمساحة الاسم. |
العلاقات | إرجاع مجموعة من كائنات DataRelation. |
الجداول | إرجاع مجموعة من كائنات DataTable. |
يسرد الجدول التالي بعض الطرق الهامة لفئة DataSet:
طريقة | يصف |
---|---|
قبول التغييرات | يقبل جميع التغييرات بسبب تحميل DataSet أو هذه الطريقة. |
BeginInit | بدء تهيئة DataSet. تحدث هذه التهيئة في وقت التشغيل. |
واضح | مسح البيانات. |
استنساخ | استنساخ بنية DataSet بما في ذلك جميع بنيات DataTable والعلاقات والقيود. ولكن لا يتم استنساخ البيانات. |
ينسخ | نسخ البيانات والهياكل. |
كريت داتا ريدر () | إرجاع DataTableReader مع مجموعة النتائج لكل DataTable، بنفس الترتيب الذي تظهر به الجداول في مجموعة الجداول. |
إنشاء DataReader(DataTable[]) | إرجاع DataTableReader مع مجموعة نتائج واحدة لكل DataTable. |
EndInit | إنهاء تهيئة DataSet المستخدمة في نموذج أو المستخدمة بواسطة مكون آخر. تحدث التهيئة في وقت التشغيل. |
يساوي (كائن) | تحديد ما إذا كان الكائن المحدد يساوي الكائن الحالي. |
وضع اللمسات الأخيرة | حرر الموارد لإجراء عملية تنظيف إضافية. |
احصل على التغييرات | الحصول على نسخة من DataSet تحتوي على كافة التغييرات التي تم إجراؤها على DataSet منذ تحميلها أو منذ آخر مرة تم فيها استدعاء AcceptChanges. |
GetChanges(DataRowState) | الحصول على نسخة من DataSet التي تمت تصفيتها بواسطة DataRowState والتي تحتوي على كافة التغييرات التي تم إجراؤها على مجموعة البيانات منذ آخر تحميل لها أو منذ استدعاء AcceptChanges. |
GetDataSetSchema | احصل على نسخة من XmlSchemaSet لمجموعة DataSet. |
GetObjectData | قم بتعبئة كائن المعلومات المتسلسلة بالبيانات المطلوبة لإجراء تسلسل DataSet. |
GetType | احصل على نوع المثيل الحالي. |
GetXML | إرجاع تمثيل XML للبيانات المخزنة في DataSet. |
GetXMLSchema | إرجاع مخطط XML لتمثيل XML للبيانات المخزنة في DataSet. |
HasChanges() | الحصول على قيمة تشير إلى ما إذا كانت مجموعة البيانات قد تغيرت، بما في ذلك الصفوف الجديدة أو الصفوف المحذوفة أو الصفوف المعدلة. |
HasChanges(DataRowState) | الحصول على قيمة تشير إلى ما إذا كانت DataSet تحتوي على تغييرات تمت تصفيتها بواسطة DataRowState، بما في ذلك الصفوف الجديدة أو الصفوف المحذوفة أو الصفوف المعدلة. |
IsBinarySerialized | تحقق من تنسيق التمثيل المتسلسل لمجموعة البيانات. |
تحميل (IDataReader، LoadOption، DataTable[]) | استخدم IDataReader المقدم لملء DataSet بالقيم من مصدر البيانات، أثناء استخدام مجموعة من مثيلات DataTable لتوفير معلومات المخطط ومساحة الاسم. |
تحميل (IDataReader، LoadOption، سلسلة []) | قم بملء DataSet بالقيم من مصدر البيانات باستخدام IDataReader المقدم واستخدام مصفوفة سلسلة لتوفير أسماء الجداول في DataSet. |
دمج() | دمج الصفيف المحدد من كائنات DataSet أو DataTable أو DataRow في DataSet أو DataTable الحالي. هناك أحمال زائدة مختلفة لهذه الطريقة. |
قراءةXML() | اقرأ مخطط XML والبيانات في DataSet. هناك أحمال زائدة مختلفة لهذه الطريقة. |
قراءةXMLSchema(0) | اقرأ مخطط XML في DataSet. هناك أحمال زائدة مختلفة لهذه الطريقة. |
رفض التغييرات | التراجع عن كافة التغييرات التي تم إجراؤها على DataSet منذ إنشائها أو منذ آخر مرة تم فيها استدعاء DataSet.AcceptChanges. |
كتابةXML() | كتابة بيانات ومخطط XML من DataSet. هناك أحمال زائدة مختلفة لهذه الطريقة. |
كتابةXMLSchema() | اكتب مخطط XML من DataSet. هناك أحمال زائدة مختلفة لهذه الطريقة. |
تمثل فئة DataTable جدولاً في قاعدة بيانات. وله الخصائص المهمة التالية: معظم الخصائص للقراءة فقط باستثناء خاصية المفتاح الأساسي:
ملكية | يصف |
---|---|
علاقات الطفل | الحصول على مجموعة العلاقات التابعة لـ DataTable هذا. |
أعمدة | الحصول على مجموعة الأعمدة التي تنتمي إلى هذا الجدول. |
قيود | يحصل على مجموعة القيود التي يحتفظ بها هذا الجدول. |
DataSet | احصل على DataSet الذي ينتمي إليه هذا الجدول. |
العرض الافتراضي | الحصول على طريقة عرض مخصصة لجدول قد تتضمن طرق عرض تمت تصفيتها أو مواضع المؤشر. |
علاقات الوالدين | الحصول على مجموعة العلاقات الأصلية لـ DataTable هذا. |
المفتاح الأساسي | الحصول على أو تعيين مجموعة الأعمدة التي تعمل كمفاتيح أساسية لجدول البيانات. |
الصفوف | الحصول على مجموعة الصفوف التي تنتمي إلى هذا الجدول. |
يسرد الجدول التالي بعض الطرق الهامة لفئة DataTable:
طريقة | يصف |
---|---|
قبول التغييرات | تنفيذ جميع التغييرات التي تم إجراؤها على DataSet هذه منذ تحميلها أو منذ آخر استدعاء لـ AcceptChanges. |
واضح | مسح DataSet لأية بيانات عن طريق إزالة كافة الصفوف من كافة الجداول. |
احصل على التغييرات | الحصول على نسخة من DataSet التي تحتوي على كافة التغييرات التي تم إجراؤها على DataSet منذ آخر تحميل لها أو منذ استدعاء AcceptChanges. |
GetErrors | الحصول على مصفوفة من كائنات DataRow التي تحتوي على أخطاء. |
استيراد صفوف | انسخ DataRow إلى DataTable، مع الاحتفاظ بأية إعدادات خصائص وقيم أولية وحالية. |
LoadDataRow | البحث عن صفوف محددة وتحديثها. إذا لم يتم العثور على صف مطابق، فسيتم إنشاء صف جديد بالقيمة المحددة. |
دمج | دمج الصفيف المحدد من كائنات DataSet أو DataTable أو DataRow في DataSet أو DataTable الحالي. |
صف جديد | قم بإنشاء DataRow جديد بنفس مخطط الجدول. |
رفض التغييرات | التراجع عن كافة التغييرات التي تم إجراؤها على الجدول منذ تحميل الجدول أو منذ آخر استدعاء لـ AcceptChanges. |
إعادة ضبط | مسح كافة الجداول وإزالة كافة العلاقات والقيود الخارجية والجداول من DataSet. يجب أن تتجاوز الفئات الفرعية إعادة التعيين لاستعادة DataSet إلى حالته الأصلية. |
يختار | يحصل على مجموعة من كائنات DataRow. |
يمثل كائن DataRow صفًا في الجدول ويتمتع بالخصائص المهمة التالية:
ملكية | يصف |
---|---|
يحتوي على أخطاء | يشير إلى ما إذا كانت هناك أخطاء. |
أغراض | الحصول على أو تعيين البيانات المخزنة في عمود معين. |
مصفوفات العنصر | احصل على أو قم بتعيين كافة القيم في هذا الصف. |
طاولة | إرجاع الجدول الأصل. |
يسرد الجدول التالي الطرق الهامة لفئة DataRow:
طريقة | يصف |
---|---|
قبول التغييرات | يطبق كافة التغييرات منذ استدعاء هذه الطريقة. |
ابدأ تحرير | ابدأ عملية التحرير. |
إلغاء التعديل | إلغاء عملية التحرير. |
يمسح | حذف صفوف البيانات. |
إنهاء | قم بإنهاء عملية التحرير. |
GetChildRows | احصل على الصفوف الفرعية لهذا الصف. |
GetParentRow | احصل على الصف الأصل. |
GetParentRows | احصل على الصف الأصلي لـ DataRow. |
رفض التغييرات | التراجع عن كافة التغييرات التي تم إجراؤها بعد استدعاء AcceptChanges. |
يعمل كائن DataAdapter كوسيط بين كائن DataSet وقاعدة البيانات. يساعد ذلك DataSet في الحصول على البيانات من قواعد بيانات متعددة أو مصادر بيانات أخرى.
تعتبر كائنات DataReader بديلاً للجمع بين DataSet وDataAdapter. يوفر هذا الكائن الوصول المباشر إلى سجلات البيانات في قاعدة البيانات. هذه الكائنات مناسبة فقط للوصول للقراءة فقط، مثل ملء قائمة ثم قطع الاتصال.
يمثل كائن DbConnection الاتصال بمصدر البيانات. يمكن مشاركة هذا الاتصال بين كائنات الأوامر المختلفة. يمثل كائن DbCommand أمرًا أو عملية مخزنة يتم إرسالها إلى قاعدة البيانات لاسترداد البيانات أو معالجتها.
لقد استخدمنا حتى الآن الجداول وقواعد البيانات من أجهزة الكمبيوتر لدينا. في هذه الحالة، سنقوم بإنشاء جدول وإضافة الأعمدة والصفوف والبيانات وعرض الجدول باستخدام عنصر تحكم GridView.
رمز الملف المصدر هو كما يلي:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="createdatabase._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title> Untitled Page </title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server"> </asp:GridView> </div> </form> </body></html>
رمز الملف هو كما يلي:
namespace createdatabase{ public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataSet ds = CreateDataSet(); GridView1.DataSource = ds.Tables["Student"]; GridView1.DataBind(); } } private DataSet CreateDataSet() { //creating a DataSet object for tables DataSet dataset = new DataSet(); // creating the student table DataTable Students = CreateStudentTable(); dataset.Tables.Add(Students); return dataset; } private DataTable CreateStudentTable() { DataTable Students = new DataTable("Student"); // adding columns AddNewColumn(Students, "System.Int32", "StudentID"); AddNewColumn(Students, "System.String", "StudentName"); AddNewColumn(Students, "System.String", "StudentCity"); // adding rows AddNewRow(Students, 1, "MH Kabir", "Kolkata"); AddNewRow(Students, 1, "Shreya Sharma", "Delhi"); AddNewRow(Students, 1, "Rini Mukherjee", "Hyderabad"); AddNewRow(Students, 1, "Sunil Dubey", "Bikaner"); AddNewRow(Students, 1, "Rajat Mishra", "Patna"); return Students; } private void AddNewColumn(DataTable table, string columnType, string columnName) { DataColumn column = table.Columns.Add(columnName, Type.GetType(columnType)); } //adding data into the table private void AddNewRow(DataTable table, int id, string name, string city) { DataRow newrow = table.NewRow(); newrow["StudentID"] = id; newrow["StudentName"] = name; newrow["StudentCity"] = city; table.Rows.Add(newrow); } }}
أثناء تنفيذ البرنامج، لاحظ الجوانب التالية:
يقوم البرنامج أولاً بإنشاء مجموعة بيانات ثم ربطها باستخدام أسلوب DataBind() الخاص بعنصر التحكم GridView.
طريقة Createdataset() هي وظيفة معرفة من قبل المستخدم تقوم بإنشاء كائن DataSet جديد وتستدعي طريقة CreateStudentTable() الإضافية المعرفة من قبل المستخدم لإنشاء الجداول ثم إضافتها إلى مجموعة جدول DataSet.
يستدعي أسلوب CreateStudentTable() طريقتي AddNewColumn() وAddNewRow() المعرفة من قبل المستخدم لإنشاء أعمدة وصفوف الجدول وإضافة البيانات إلى الصفوف. عند تنفيذ الصفحة، تقوم بإرجاع صفوف الجدول كما هو موضح أدناه: