بعد ان عرفنا انواع قواعد البيانات ، وتعرفنا على طريقة ربط قاعده بيانات اكسس بالفيجوال عن طريق المعالج اليوم درسنه كيف يتم الاتصال بقواعد البيانات اي كان نوعها عن طريق الاكواد او مايسمى بالوضع المنفصل عن معالج بالفيجوال دوت نت
اخي المبرمج عندما تريد تصميم قاعدة بيانات اي كان نوعها سوف تحتاج الئ فضاء الأسماء (الاكواد) للاتصال بين هذا القاعدة وبيئة الدوت نت
الربط بين قاعدة البيانات وبيئة الدوت نت
الإتصال عن طريق الكود
المكتبات التي نحتاجها للإتصال بقواعد البيانات
Imports System.Data
فضاء System.Data يتعامل مع ADO.NET تحتوي على عدد كبير من فضاءات الأسماء التي تمكنك من الإرتباط بقواعد البيانات بأنواعها
1⃣ Imports System.Data.OleDb
فضاء الأسماء أو طبقة التي تتعامل مع قواعد البيانات أكسس تحتوي على عدد كبير من Class منها فتح إتصال بقاعدة البيانات أكسس
OleDbConnection
OleDbCommand
OleDbDataAdapter
2⃣➖ System.Data.SqlClient
فضاء الأسماء أو طبقة التي تتعامل مع SQL Server تحتوي على عدد كبير من Classمنها فتح إتصال بقاعدة البياناتSQLServer
SqlConnection
SqlCommand
SqlDataAdapter
3⃣➖ System.Data.OracleClient
فضاء الأسماء أو طبقة التي تتعامل مع Oracle تحتوي على عدد كبير من Class
فتح إتصال بقاعدة البيانات Oracle
OracleConnection
OracleCommand
OracleDataAdapter
4⃣➖ System.Data.Odbc
فضاء الأسماء أو طبقة الذي يجهز لــODBC
تحتوي على عدد كبير من Class
فتح إتصال بقاعدة البيانات
OdbcConnection
OdbcCommand
OdbcDataAdapter
يمكنك هذا الفضاء من الإتصال وجلب المعلومات من قاعدة البيانات
فضاء الأسماء أو طبقة
System.Data.OleDb التي تتعامل مع قواعد البيانات أكسس
Imports System.Data.OleDb
الإستدعاء عند كل برنامج قاعدة بيانات أكسس تحتوي على عدد كبير من Class منها
فتح إتصال بقاعدة البياناتأكسس
OleDbConnection
OleDbCommand
OleDbDataAdapter
نتذكر مما سبق للإتصال بقواعد البيانات أول شيء يجب عمله
المكتبات التي نحتاجها للإتصال بقواعد البيانات
➖ Imports System.Data
الإستدعاء عند كل برنامج قاعدة بيانات أكسس
Microsoft Access 2010 Imports
➖ System.Data.OleDb
الإستدعاء عند كل برنامج قاعدة بيانات
➖ SQLServer Imports System.Data.SqlClient أو
الإستدعاء عند كل برنامج قاعدة بيانات Oracle Imports
System.Data.OracleClient أو
مثال تطبيقي
Imports System.Data
Imports System.Data.OleDb
أي يكتب في Form1
سنشرح طرق الاتصال مع جميع انواع قواعد البيانات سواء كانت Access او Oracle او MySQL او Sql server وكل قاعدة بيانات من هذة الانواع لها فضاء للاتصال بها وما يهمنا الان هو
كيف يمكننا الاتصال بقواعد بيانات اكسس (access)
1⃣ Imports System.Data
2⃣ Imports System.Data.OleDb
عزيزي المبرمج انظر إلى هذين الكودين اول كود او فضاء مختص بجلب مكتبه تحتوي على عدد كبير من فضاءات الأسماء ، ثاني كود مختص بالاتصال بقواعد بيانات اكسس اي في كل مره تقوم بتصميم قاعدة بيانات اكسس سوف تحتاج او اول ما تفعله هوه كتابه هذين الكودين في فضاء الأسماء اي فوق public from1
انظر الى هذه الصورة جيدا وبالخصوص علئ مربع المحدد للكودين لاحظ كيف واين نكتب هذين الكودين لاتصال بقواعد بيانات من نوع اكسس access
ملاحظه اخي المبرمج لا تتسرع في تصميم قواعد البيانات، يجب عليك اولا فهم الكود وكيف يتم واين كتابته صح انا معك انت متشوق لتصميم قاعدة بيانات بنفسك لكن الصبر مطلوب لكي تتعلم باحتراف وتصبح قادر باذن الله على تصميم اي قاعدة بيانات بدون اي مشاكل ،ولا تتعلم عن طريق نسخ الاكواد ولصقها هذا خطا هذه الطريقه تجعلك مقلد للبرنامج او المشروع الذي قمت انا او غيري بتصميم هذا البرنامج وانت قمت بتصميم نفس البرنامج واخذت الاكواد ونسختها من هذا البرنامج الى برنامجك كأنما تقوم بنسخ صوره من صوره اخرى ، لا باس بتطبيق او نسخ الاكواد للتعلم وليس كل مره تقوم بنسخ الاكواد وتطبيقها ،يعني مثلا عندما يكون هناك درس جديد وعليه 5 امثله قم بتطبيق وتصميم اول مثال ونسخ الاكواد وبقية الامثله 4 افهمها ، يجب عليك فهم الكود وطريقه كتابته واين يكتب هكذا تصبح محترف ومبدع ان شاء الله
لربط قاعدة البيانات اكسس بالفيجوال
OleDbConnection
ويحتوي علئ الطرق (Methods) التالية :
1⃣ Open لفتح الإتصال بقاعدة البيانات
2⃣ Close لإغلاق الإتصال بقاعدة البيانات
ويحتوي ايضا OleDbConnection على Properties الخصائص التالية :
1⃣ Database
معرفة إسم قاعدة البيانات التي تم الإتصال به
2⃣ DataSource
جلب ملف الخادم أو إسم الملف DataSource
➖Dim conn As New OleDbConnection(ConStr)
لفتح اتصال من اي نافذة داخل البرنامج
➖Microsoft.Jet.OLEDB.4.0
هي اداة التعامل مع قواعد بيانات اكسس
OleDbDataAdapter
ويحتوي على الطرق (Methods )التالية :
1⃣ Fill(DataSet, tabelName)
تملأ DataSet بجدول tabelName من قاعدة البيانات التي يتم الإتصال بها
2⃣ Update(DataSet)
يحدث محتويات DataSet
ـ➖ Connection دور هذا الكائن هو الربط بين التطبيق وقاعدة البيانات ، اذ انه يقوم بفتح اتصال بينهما
ـ➖Command يقوم بتنفيذ امر (اضافة ،تعديل ، حذف ..) على قاعدة البيانات.
ـ➖Reader يقوم بالقراءة من مصدر البيانات فقط (Readeronly) ويستعمل هذا الكائن في الوضع المتصل
ـ➖DataSet وهي مجموعة من البياتات ويمكن ان تظم جداول وعلاقات كما هو الحال في قواعد البيانات لها دور اساسي في تكديس البيانات في الذاكرة . ويستعمل هذا الكائن في الوضع المنفصل .
ـ➖DataAdapter له دور اساسي اذ يقوم بملء الداتاسيت بالبيانات ، وكذلك يقوم بعمليات الاضافة والحذف في مصدر البيانات.
ـ➖Provider هو مزود البيانات الذي نشتغل عليه وفي حالتنا هذه هو ميكروسوفت اكسس ذو النسخة 12.0
ـ➖DataGridView هي عبارة عن اداة تقوم بعرض البيانات على شكل جدول (اسطر واعمدة ) كما تمكننا ايضا من اجراء عمليات الاضافة والحذف والتعديل عليها دون الحاجة الى استعمال ادوات اخرى
بعد ما عرفنا ماهي قاعدة البيانات؟
وكذلك عرفنا قواعد البيانات وعرفنا ماهو الوضع المتصل والمنفصل ، وايضا عرفنا مكتباب (فضاء الاسماء) للاتصال بقواعد البيانات……
وشرحنا بمثال لتصميم قاعدة بيانات أكسس وربطها بالفيجوال عن طريق الوضع المتصل .
اليوم درسنا تكمله لما سبق
وهو
كيف يتم ربط الاكسس بالفيجوال عن طريق الاكواد اي بالوضع المنفصل ..
قلنا في السابق عند تصميم قاعدة بيانات بالاكسس وعندما نريد نربطها بالفيجوال عن طريق الاكواد سوف نحتاج الى تعريف مكتبة فضاء الأسماء وعرفنا كيف نعلن عن مكتبه فضاء الأسماء عن طريق كتابة الكود التالي :
Imports System.Data
Imports System.Data.OleDb
Public Class Form1
طيب بعد ان عرفنا مكتبة فضاء الأسماء
ناتي لربط قاعدة البيانات عن طريق
فتح اتصال من خلال بين الفيجوال وقاعدة البيانات اكسس
سوف اقوم بتوضيح اكثر من خلال انشاء مشروع جديد يتكون هذا المشروع من ثلاث مراحل :
1⃣ المرحلة الأولى انشاء قاعدة بيانات بالاكسس
2⃣المرحلة الثانية ربط قاعدة بيانات اكسس بالفيحوال وكذلك اضافة الادوات الى الفروم
3⃣المرحلة الثالثه برمجة ادوات التحرير
المرحلة الاولى
انشاء قاعدة بيانات اكسس Access
افتح برنامج ميكروسوفت اكسس
في مثالنا سنشتغل على ميكروسوفت اكسس 2007 نسخة عربية ولا يوجد فرق بين نسخة او اصدارات البرنامج
بعد ذلك افتح برنامج Access ستضهر لك شاشة التالية
اضغط على الايقونة " قاعدة بيانات فارغة"
اكتب اسمها StudentBase او ضع اي اسم يحلو لك فلا ديكتاتورية هنا
ستلاحظ بعد الضغط على الزر انشاء ظهور نافذة انشاء الجداول كما في الصورة رقم 1
كما تلاحظ هناك جدول افتراضي اسمه جدول وباالانكليزي Table1 نقوم بتغير اسمة الى 1⃣Student ثم نقوم بعرض التصميم نقوم الان بانشاء الحقول ولكل حقل نوع معين من البيانات ووصف خاص به ..
كما في الصورة رقم 2
نقوم بانشاء الحقول كما يلي :
ID_Student نوعه رقم
First_name نص
last_name نص
Age رقم
Adress نص
عند الانتهاء من تسجيل الحقول سوف نذهب الى الحقل الاول ID_Student ونضغط عليه بيمين الفارة ونختار مفتاح 🔑 اساسي 🔑
والغاية من جعل الحقل حقلا اساسيا هو تفادي تكرار مجموعة من العناصر فمثلا لا يمكن تسجيل طالبين في نفس الرقم ، بعد ذلك نقوم باغلاق الجدول فتظهر نافذة تحذيرية تسالنا هل تريد حفظ الجدول نضغط على نعم
2⃣ كذلك نقوم بانشاء جدول ثاني ونسميه Courses وذلك بالذهاب الى قائمة انشاء ، جدول ثم نقوم بتسجيل الحقول التالية :
وكما في الصورة رقم 3
ID_Courses نوعه رقم
Description نوعه نص
نجعل الحقل الاول مفتاح 🔑 اساسي
نقوم بحفظ الجدول .
3⃣ نقوم بانشاء جدول ثالث باسم Marks ونقوم بانشاء الحقول التالية :
وكما في الصورة رقم 4
lD_mark رقم
lD_Student رقم
lD_Courses رقم
Mark رقم
نجعل حقل اول مفتاح 🔑 اساسي ونقوم بحفظ الجدول .
الان سوف نقوم بانشاء علاقات بين هذه الجداول هناك ثلاث علاقات بين الجداول وهي:
واحد لواحد
واحد لاكثر
اكثر لاكثر
سنقوم باستخدام علاقة اكثر لاكثر وهي الاكثر ترددا وشيوعا ،
ولانشاء العلاقات بين الجداول نذهب إلى قائمة
ادوات قاعدة البيانات ثم نختار علاقات ، ستظهر لك نافذة كما في الصورة رقم 5 نقوم بتحديد الجداول الثلاثه ثم نختار اضافة سوف تظهر لك نافذة كما في الصورة رقم 6
سوف نذهب الى جدول Courses ونضغط على الحقل lD_Courses ونجذبة الى الحقل lD_Courses الموجود في الجدول Marks . ستظهر لك هذة النافذة كما في الصورة رقم 7 ثم نضغط على انشاء سوف تظهر لك نافذة كما في الصورة رقم 8
ستلاحظ انه تم انشاء وصل علاقة بين الجدولين في دلالة على ان العلاقة تمت بينهما .
الان نقوم بنفس الشي مع الجدول Student ونضغط على المفتاح الاساسي lD_Student ونقوم بجرة الى مثيله في الجدول Marks ليصبح الشكل النهائي للعلاقات كما في الصورة رقم 9
الان لم يتبق لنا سوى ملء الجداول بقيم اولية وذلك بالضغط على جدول Student ونقوم بتعبئت الجداول ببيانات اعتباطية كما في الصورة رقم 10
الان تم الانتهاء من انشاء قاعدة بياتات اكسس access قم باغلاق البرنامج
لاحظ بالصور كيف تم انشاء قاعدة بيانات أكسس وكيف تم انشاء علاقه بين الجداول
صوره رقم 1
صوره رقم 2
صوره رقم 3
صوره رقم 4
المرحلة الثانية
ربط قاعدة البيانات بالفيجوال استوديو
نفتح برنامج الفيجوال ونقوم بانشاء مشروع جديد باي اسم تريده سوف تظهر لك نافذة البرنامج
بعد انشاء مشروع جديد وكذلك انشاء قاعدة بيانات اكسس access نقوم بنقل قاعدة بيانات اكسس الى مسار المشروع الذي قمنا بنشائه ونضع قاعدة البيانات في ملف مشروع جديد كما يلي
bin/Debug
نرجع الى المشروع ونقوم بادراج الادوات
التاليه الى الفروم :
🔸اداة مجمع الادوات GroupBox عدد 3 وهي تلك الاطار الابيض الضاهر في الفروم التي تحيط بكل مجموعة
🔸اداة مربع النص TextBox عدد 5
🔸 اداة Button عدد 10
🔸اداة الداتا غريند فيو DataGridView عدد 1 وهي التي تظهر عليها البيانات
🔸اداة Label عدد 5
1️⃣نقوم بتسمية عدد 6 Button كما يلي
ـ➖New. تفريغ محتوى Textbox
ـ➖Add اضافة طالب جديد
ـDelete➖ حذف طالب من جدول
ـ ➖Edit. تعديل بيانات طلاب
ـ➖Find بحث عن معلومات طلاب
ـ➖Exit الخروج من البرنامج
نضع هذه الازرار في مجموعة GroupBox ونسميها Update
2️⃣ نقوم بتسمية عدد 4 Button البقية كما يلي
| |>>
>>>
<<<
>>| |
هذه الرموز التي قمنا بتسمية الازرار موجودة في الكيبورد ثم نضع هذه الازرار في مجموعة GroupBox ونسميها Navigation
3️⃣نقوم باعادة تسمية Label كما يلي
ld_student
first_name
last_name
Age
Adress
3️⃣ نقوم بتكبير اداة textbox كما في الصورة ثم نضغط على اول textbox ومن الخصائص لها نختار (Name) ونكتب TxtID
ثم نضغط على ثاني textbox ومن نفس الخصائص (Name) نكتب TxtFname
وكذلك نضغط على ثالث textbox ومن خاصية (Name) نكتب TxtLname
ونضغط على رابع textbox ومن خاصية (Name) نكتب TextAge
ونضغط على خامس textbox ومن خاصية (Name) نكتب TextAdress
#ملاحظه هذا تسميات لـtextbox تفيدنا عند كتابه الاكواد
بعد ادراج الادوات وتسميتها يصبح المشروع كما في الصورة رقم 1
مرحلة برمجة الازرار (الكود)
اول شي نعمله هو تعريف فضاء الأسماء كما قلنا سابقا نضغط على فروم لتفتح لنا صفحه الكود نكتب فوق public class Forml
الكود التالي : كما في الصوره رقم 2
Imports System.Data
Imports System.Data. OleDb
بعد ذلك نقوم بانشاء الاتصال مع قاعدة البيانات ، ولفعل ذلك نعلن على متغير اسمه con من نوع OleDbConnection
Dim Con As New OleDbConnection
ثم نكتب المسار التي توجد عليه قاعدة البيانات اكسس ويصبح الكود كاالاتي :
كما في الصورة رقم 3
Dim Con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=StudentBase.accdb")
#شرح_الكود
كما ترى فنص الاتصال
Connectionstring
له مجموعة من البارامترات وهي كما يلي :
ـ➖Provider هو مزود البيانات الذي نشتغل عليه وفي حالتنا هذه هو ميكروسوفت اكسس ذو النسخة 12.0
ـ ➖Data Source وهو المسار الذي توجد عليه قاعدة البيانات .
قمنا بانشاء سلسلة الربط بين البرنامج وقاعدة البيانات ، سنجلب الان بيانات جدول الطلاب ونظهرها في الداتا غريند فيو ، وللقيام بذلك نحتاج الى كائنين اثنين :
ـ ➖OledbDataAdapter ودورة هو تنفيذ استعلامات SQL
ـ➖DataTable وهي بمثابة جدول لتخزين ما سيقوم OledbDataAdapter بحلبه ،
سوف تكون شفرة الاعلان كما يلي :
كما في الصورة رقم 4
Dim Da As OleDbDataAdapter
Dim Dt As New DataTable
الان سنذهب الى الحدث
Form1_Load
ونجلب بيانات جدول الطلاب باستعمال
OledbDataAdapter
ثم نخزن ذلك في DataTable ونكتب الكود التالي : كما في الصورة رقم 5
Da = New OleDbDataAdapter
("Select * From Student", Con)
Da.Fill(Dt)
DGV.DataSource = Dt
#شرح_الكود : في السطر الاول قمنا بارسال استعلام جلب البيانات من القاعدة بالاعتماد على
OledbDataAdapter
وحددنا له سلسلة Con التي ينبغي ان يمر عبرها ، ثم بعد ذلك افرغنا ما قام بجلبة في
ـDataTable عن طريق الدالة Fill ، وفي الاخير قمنا بملء DataGridview من هذه
ـDataTable … .
✅اذا قمنا بتنفيذ البرنامج سوف تعرض لنا بيانات الجدول كما في الصورة رقم 6
الى هنا انهينا اتصال وربط قاعدة بيانات اكسس بالفيجوال
المرحلة الثانية لاحظ كيف قمنا بذلك عن طريق الصور
رقم 1
صوره رقم 4
5
6
المرحلة الثالثة
برمجة ادوات( الازرار ) التي قمنا باضافتها الى الفروم مثل اضافه والحذف والتعديل والبحث الى الخ… .
1⃣ ناتي على اول زر هو New ننقر عليه نقرتين ونكتب الكود التالي
For Each K As Control In GroupBox1.Controls
If TypeOf K Is TextBox Then
K.Text = ""
TxtID.Focus()
End If
Next
عزيزي المبرمج يمكنك برمجة بقية الازرار حيث قمت بادراج لك جميع الاكواد في ملف نصي مع البرنامج وقمت بترقيم الاكواد حسب الزر الذي يلائمه يمكنك انت اكمال برمجه الازرار بنفسك
⚠️ملاحظات
💻 عند برمجة زر Add نقوم باعلان عن متغير اسمه codb كما في الصورة رقم 1
💻وعند برمجة ازرار التنقل بين سجلات
نقوم بانشاء اجراء نسمية movedata
ونكتب الكود التالي
Sub MoveData(ByVal Position As Integer)
TxtID.Text = Dt.Rows(Position).Item(0)
TxtFname.Text = Dt.Rows(Position).Item(1)
TxtLname.Text = Dt.Rows(Position).Item(2)
TextAge.Text = Dt.Rows(Position).Item(3)
TextAdress.Text = Dt.Rows(Position).Item(4)
End Sub
بعد ذلك نقوم باعلان عن متغير رقمي عام
نسمية lndex كما في الصورة رقم 2
Dim lndex as intger
بقية اكواد ازرار التنقل بين سجلات قمت بادراجها في ملف نصي ومرقمه
بعد ماتقوم ببرمجة جميع الازرار قم بتنفيذ البرنامج سوف تظهر لك نافذة البرنامج قم بملء تسكت بوكس بالبيانات وقم بالضغط على زر add لاضافه البيانات الى داتا فيو datagridview وجرب بقيه الازرار
الاضافة والحذف والتعديل والبحث
1
2
بعض من صور البرنامج بعد التنفيذ وبعد تجربه الازرار
كود الاتصال بقاعده البيانات
1-Public Class Form1 Dim Con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\StudentBase.accdb") Dim Da As OleDbDataAdapter Dim Dt As New DataTable Dim Cmdb As New OleDbCommandBuilder Dim Index As Integer 2-Form1_Load Da = New OleDbDataAdapter("Select * From Student", Con) Da.Fill(Dt) DGV.DataSource = Dt
اكواد ازرار التنقل
1-゚賺 レヌ� 睫レム泚 ヌ睇メムヌム Sub MoveData(ByVal Position As Integer) TxtID.Text = Dt.Rows(Position).Item(0) TxtFname.Text = Dt.Rows(Position).Item(1) TxtLname.Text = Dt.Rows(Position).Item(2) TextAge.Text = Dt.Rows(Position).Item(3) TextAdress.Text = Dt.Rows(Position).Item(4) End Sub 2->>|| Index = Dt.Rows.Count - 1 MoveData(Index) 3-<<< If Index = 0 Then MsgBox("This is the first student", MsgBoxStyle.Critical) Exit Sub End If Index = Index - 1 MoveData(Index) 3->>> If Index = Dt.Rows.Count - 1 Then MsgBox("This is the Last student", MsgBoxStyle.Critical) Exit Sub End If Index = Index + 1 MoveData(Index) 4-||>> Index = 0 MoveData(Index)
اكواد ازرار التحرير
衵ノ ヌ゚貮マ new add delet edit find exit 1-NEW For Each K As Control In GroupBox1.Controls If TypeOf K Is TextBox Then K.Text = "" TxtID.Focus() End If Next 2-Add Try Dim R As DataRow = Dt.NewRow R(0) = TxtID.Text R(1) = TxtFname.Text R(2) = TxtLname.Text R(3) = TextAge.Text R(4) = TextAdress.Text Dt.Rows.Add(R) Cmdb = New OleDbCommandBuilder(Da) Da.Update(Dt) MsgBox("Student added successfully !", MsgBoxStyle.Information) Catch ex As Exception MsgBox("Some errors was occured !", MsgBoxStyle.Critical) End Try 3-Delet Dim Input As String Try Input = InputBox("Enter The ID of Student To Delete !", "Delete") For i As Integer = 0 To Dt.Rows.Count - 1 If Input = Dt.Rows(i).Item(0) Then Dt.Rows(i).Delete() Cmdb = New OleDbCommandBuilder(Da) Da.Update(Dt) MsgBox("Student Deleted Successfully", MsgBoxStyle.Information) Exit Sub End If Next MsgBox("Not Found !") Catch ex As Exception MsgBox("Some errors was occured !", MsgBoxStyle.Critical) End Try 4-edit Try For i = 0 To Dt.Rows.Count - 1 If Dt.Rows(i).Item(0) = TxtID.Text Then Dt.Rows(i).Item(0) = TxtID.Text Dt.Rows(i).Item(1) = TxtFname.Text Dt.Rows(i).Item(2) = TxtLname.Text Dt.Rows(i).Item(3) = TextAge.Text Dt.Rows(i).Item(4) = TextAdress.Text Cmdb = New OleDbCommandBuilder(Da) Da.Update(Dt) MsgBox("Student Edited Successfully", MsgBoxStyle.Information) End If Next Catch ex As Exception MsgBox("Some errors was occured !", MsgBoxStyle.Critical) End Try 5-find Dim Input As String Try Input = InputBox("Enter The ID of Student To Search !", "Search") For i As Integer = 0 To Dt.Rows.Count - 1 If Input = Dt.Rows(i).Item(0) Then Me.TxtID.Text = Dt.Rows(i).Item(0) Me.TxtLname.Text = Dt.Rows(i).Item(1) Me.TxtFname.Text = Dt.Rows(i).Item(2) Me.TextAge.Text = Dt.Rows(i).Item(3) Me.TextAdress.Text = Dt.Rows(i).Item(4) Exit Sub End If Next MsgBox("Not Found !") Catch ex As Exception MsgBox("Some errors was occured !", MsgBoxStyle.Critical) End Try 6-exit end -----------