تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
انشاء قاعدة بيانات باستخدام تقنية adox
#1
[COLOR="#A52A2A"]بسم الله الرحمن الرحيم

وصلى الله على محمد وآله الطاهرين

السلام عليكم ورحمة الله وبركاته [/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(dbPathThen
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 

نحدد اسم الجدول وقاعدة البيانات للجدول كما في الكود اعلاه.

ثالثا انشاء الاعمدة وسنقوم بانشاء حقلين باسم ID و fName على التوالي بالشكل التالي:

#C
PHP كود :
table.Columns.Append("ID"DataTypeEnum.adInteger4);
table.Keys.Append("ID"KeyTypeEnum.adKeyPrimary"ID""myTable""ID");
table.Columns["ID"].Properties["AutoIncrement"].Value true;
            
table.Columns.Append("fName"DataTypeEnum.adVarWChar50);
table.Columns["fName"].Properties["Nullable"].Value false

VB
PHP كود :
table.Columns.Append("ID"DataTypeEnum.adInteger4)
table.Keys.Append("ID"KeyTypeEnum.adKeyPrimary"ID""myTable""ID")
table.Columns("ID").Properties("AutoIncrement").Value True

table
.Columns.Append("fName"DataTypeEnum.adVarWChar50)
table.Columns("fName").Properties("Nullable").Value False 

كما في الكود أعلاه يمكننا اضافة عمود من خلال الكائن Columns للTable وعن طريق الدالة Apend التي تأخذ ثلاث مدخلات كما مبين في الشكل التالي:



كما يمكننا أن نحدد خاصية الحقل مثلا خاصية الـترقيم التلقائي او خاصية nullable وخصائص اخرى من خلال الـProperties للحقل وبامكاننا ان نحدد حقل الPrimaryKey او Foreign
key أو Unique للجدول عن طريق الـKeys للجدول كما في الكود أعلاه.

حيث الاول اسم الحقل والثاني نوع الحقل والثالث حجم الحقل.

وأخيرا سنقوم باضافة الجدول الى قاعدة البيانات ومن ثم نغلق الاتصال بقاعدة البيانات كالتالي:

#C
PHP كود :
c.Tables.Append(table);

null;
GC.Collect(); 

VB
PHP كود :
c.Tables.Append(table)

Nothing
GC
.Collect() 

كما ترون قمنا باسناد null الى الـCatalog مع استدعاء GC.Collect وذلك لعدم وجود دالة لغلق الاتصال مع قاعدة البيانات.


ملاحظة مهمة: هنالك عدة طرق لانشاء جدول وحقل وقاعدة بيانات وذلك عن طريق CatalogClass, TableClass, ColumnClass لكن أولا يجب أن نقوم بتحويل قيمة الـEmbed Interop Types الى False للـADOX عن طريق اختياره من الـReference والذهاب الى الـProperties ومن ثم تغيير القيمة. وانا قمت

الى هنا والحمد لله انتهينا من تقديم نبذة مختصر للمكتبة ADOX والتي تعتبر امتداد للمكتبة ADO لكن تتعامل فقط مع مستوى الـDDL. وأسأل الله لكم ولي الموفقية فيما يحبه ويرضاء ولا تنسوني و والدي من خالص دعواتكم والسلام عليكم ورحمة الله وبركاته.

الرد }}}}
تم الشكر بواسطة: محمد بن عطية
#2
الله يعطيك العافيه
الرد }}}}
تم الشكر بواسطة: Sajad
#3
الله يعافيك أخي العزيز ربيع
الرد }}}}
تم الشكر بواسطة:
#4
اخ سجاد لا أعرف كيف اشكرك هذا الموضوع يجب ان يثبت في القسم المناسب مثلا
قسم أسئلة برمجة قواعد البيانات تحت بيئة .net
او
فيجوال بيسك دوت نت VB.NET
حتى نستفيد نحن منه ايضا وليس فقط لـ C#
شكرا جزيل الشكر
الرد }}}}
تم الشكر بواسطة: محمد بن عطية , محمد بن عطية
#5
السلام عليكم

بارك الله فيك

تم نقل الموضوع الى قسم مقالات وبرمجة قواعد البيانات
الرد }}}}
تم الشكر بواسطة:
#6
شكرا جزيلا اخ سجاد
ولكن هناك مشكلة
Imports ADOX

يظهر عندها خطأ هل البرنامج لا يدعمها ويجب ان انزل ملف بخصوص هذا الموضوع بحيث يتعرف على على المكتبة
الرد }}}}
تم الشكر بواسطة:
#7
السلام عليكم

اقرأ المقال جيدا
إقتباس :دراج مكتبة Microsoft ActiveX Data Objects Extensions من الـReference ثم COM ثم اختيار Microsoft ADO Ext. 2.8 for DDL and Security
الرد }}}}
تم الشكر بواسطة:
#8
فتح الله لك..
الرد }}}}
تم الشكر بواسطة: Sajad , Sajad
#9
السلام عليكم

ولك ان شاءالله
الرد }}}}
تم الشكر بواسطة:
#10
شكرا اخ سجاد لقد اخطات في اختيار المكتبة :p
شكرا جزيلا لك
الرد }}}}
تم الشكر بواسطة: Sajad


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تحويل بيانات قاعدة على شكل جدول أبولجين 0 57 04-11-16, 11:52 AM
آخر رد: أبولجين
  ترحيل قاعدة بيانات اكسس من الجهاز الى قاعدة على الموقع-ACCESS->My SQL ابو ليلى 3 219 03-11-16, 11:35 AM
آخر رد: aksoft
  اكواد - (عرض اسماء الجداول في قاعدة ما - عرض اسماء الاعمدة في جدول ما) سعود 4 1,137 07-09-16, 12:14 AM
آخر رد: محمد بن عطية
  كيفية تحزيم برنامج وتضمين معه قاعدة البيانات شرح بالصور مبرمج بلا حدود 30 14,617 20-07-16, 06:58 PM
آخر رد: ahmedfa71
  ربط مشروع GIS بقاعدة بيانات SQL والتحكم بالبيانات من خلال VB.net khodor1985 1 653 02-06-16, 12:44 PM
آخر رد: CLARO
  الاصدرا 2 من مكتبة alysbisydata للاضافة لقاعدة بيانات اكسس و سيكوال alimse 4 1,273 02-06-16, 12:43 PM
آخر رد: CLARO
  الافتراضي مقدمة إلى تقنية LINQ القادمة مع Orcas ! oneyemenweb2 2 616 10-03-13, 01:05 AM
آخر رد: abdoojh
  التحكم فى قواعد بيانات اكسس القيصر بيلا 0 593 26-11-12, 07:31 PM
آخر رد: القيصر بيلا
  مثال بسيط لاستخدام mdiparent بمثال ربط بقاعدة بيانات سعود 0 889 17-09-12, 03:04 PM
آخر رد: سعود
  لما لا تستخدم قاعدة بيانات SQL Compact Edition ؟ Islam Ibrahim 0 1,332 17-09-12, 12:50 PM
آخر رد: Islam Ibrahim

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم