[COLOR="#A52A2A"]بسم الله الرحمن الرحيم
وصلى الله على محمد وآله الطاهرين
السلام عليكم ورحمة الله وبركاته [/COLOR]
وصلى الله على محمد وآله الطاهرين
السلام عليكم ورحمة الله وبركاته [/COLOR]
اعزائي اعضاء و زوار المنتدى الكرام سنقوم في هذا الموضوع بأخذ نظرة بسيطة على تقنية ADOX وكيفية استخدام هذه التقنية في انشاء قاعدة بيانات Access بلغتي #C و VB حيث تعتبر هذه التقنية خاصة لمستوى الـ Data Definition Language الخاصة في التعامل مع انشاء الجداول والاعمدة.
أولا علينا ادراج مكتبة Microsoft ActiveX Data Objects Extensions من الـReference ثم COM ثم اختيار Microsoft ADO Ext. 2.8 for DDL and Security
ومن ثم ادراج المكتبة الى مجالات الاسماء مع مجال الاسماء IO:
#C
PHP كود :
using ADOX;
using System.IO;
VB
PHP كود :
Imports ADOX
Imports System.IO
ثانا تحديد نص الاتصال الخاص بقاعدة بيانات Access حسب الاصدار الذي لديك:
#C
PHP كود :
string dbPath = "مسار قاعدة بيانات أكسس";
string conStr = "نص الاتصال" + dbPath;
VB
PHP كود :
Dim dbPath As String = "مسار قاعدة بيانات أكسس"
Dim conStr As String = "نص الاتصال" & dbPath
ثالثا التأكد من خلو المسار من قاعدة بيانات من نفس الاسم:
#C
PHP كود :
if (File.Exists(dbPath))
File.Delete(dbPath);
VB
PHP كود :
If File.Exists(dbPath) Then
File.Delete(dbPath)
End If
الان وصلنا الى الجزء الأهم حيث سنقوم بانشاء قاعدة البيانات اعتمادا على نص الاتصال مع انشاء جدول مع اضافة أعمدة وتحديد نوعها في الجدول
اولا ننشأ كائن من الواجهة Catalog ثانيا نستدعي الدالة Create التي تأخذ مدخل واحد يمثل نص الاتصال ومن خلاله نقوم بانشاء قاعدة البيانات في المساء المحدد في نص الاتصال:
#C
PHP كود :
Catalog c = new Catalog();
c.Create(conStr);
VB
PHP كود :
Dim c As New Catalog()
c.Create(conStr)
ثانيا انشاء جدول من خلال الواجهة Table
#C
PHP كود :
Table table = new Table();
table.Name = "myTable";
table.ParentCatalog = c;
VB
PHP كود :
Dim table As New Table()
table.Name = "myTable"
table.ParentCatalog = c
نحدد اسم الجدول وقاعدة البيانات للجدول كما في الكود اعلاه.
ثالثا انشاء الاعمدة وسنقوم بانشاء حقلين باسم ID و fName على التوالي بالشكل التالي:
#C
PHP كود :
table.Columns.Append("ID", DataTypeEnum.adInteger, 4);
table.Keys.Append("ID", KeyTypeEnum.adKeyPrimary, "ID", "myTable", "ID");
table.Columns["ID"].Properties["AutoIncrement"].Value = true;
table.Columns.Append("fName", DataTypeEnum.adVarWChar, 50);
table.Columns["fName"].Properties["Nullable"].Value = false;
VB
PHP كود :
table.Columns.Append("ID", DataTypeEnum.adInteger, 4)
table.Keys.Append("ID", KeyTypeEnum.adKeyPrimary, "ID", "myTable", "ID")
table.Columns("ID").Properties("AutoIncrement").Value = True
table.Columns.Append("fName", DataTypeEnum.adVarWChar, 50)
table.Columns("fName").Properties("Nullable").Value = False
كما في الكود أعلاه يمكننا اضافة عمود من خلال الكائن Columns للTable وعن طريق الدالة Apend التي تأخذ ثلاث مدخلات كما مبين في الشكل التالي:
كما يمكننا أن نحدد خاصية الحقل مثلا خاصية الـترقيم التلقائي او خاصية nullable وخصائص اخرى من خلال الـProperties للحقل وبامكاننا ان نحدد حقل الPrimaryKey او Foreign
key أو Unique للجدول عن طريق الـKeys للجدول كما في الكود أعلاه.
حيث الاول اسم الحقل والثاني نوع الحقل والثالث حجم الحقل.
وأخيرا سنقوم باضافة الجدول الى قاعدة البيانات ومن ثم نغلق الاتصال بقاعدة البيانات كالتالي:
#C
PHP كود :
c.Tables.Append(table);
c = null;
GC.Collect();
VB
PHP كود :
c.Tables.Append(table)
c = Nothing
GC.Collect()
كما ترون قمنا باسناد null الى الـCatalog مع استدعاء GC.Collect وذلك لعدم وجود دالة لغلق الاتصال مع قاعدة البيانات.
ملاحظة مهمة: هنالك عدة طرق لانشاء جدول وحقل وقاعدة بيانات وذلك عن طريق CatalogClass, TableClass, ColumnClass لكن أولا يجب أن نقوم بتحويل قيمة الـEmbed Interop Types الى False للـADOX عن طريق اختياره من الـReference والذهاب الى الـProperties ومن ثم تغيير القيمة. وانا قمت
الى هنا والحمد لله انتهينا من تقديم نبذة مختصر للمكتبة ADOX والتي تعتبر امتداد للمكتبة ADO لكن تتعامل فقط مع مستوى الـDDL. وأسأل الله لكم ولي الموفقية فيما يحبه ويرضاء ولا تنسوني و والدي من خالص دعواتكم والسلام عليكم ورحمة الله وبركاته.