بسم الله الرحمن الرحيم
بحثت في المنتديات العربية عن كيفية الاتصال بقواعد البيانات SQL Server المرتكزة على قواعد بيانات Microsoft SQL Server Express ، وفي الحقيقة أنني وجدت الكثير من المشاركات التي تدور حول طرق الاتصال تلك ، لكنني لم أجد أي من هذه المشاركات كاف ووافي بحيث لا يحتاج المبرمج المبتدئ إلي طرح الكثير من الأسئلة بعد تلك المشاركة ، من هنا وجدت أنه لابد من وجود مشاركة تكون كافية ووافية تجيب عن أي سؤال قد يتبادر إلي ذهن المبرمج سواء كان مبدءاً أو محترفاً في عملية الاتصال بقواعد بيانات SQL Server .
بسم الله نبدأ ، والله المستعان
في البداية لابد من سرد سيناريو طريقة استخدام برنامجك من قبل المستخدم ، فالمستخدم بعد أن يقوم بتثبيت محرك قواعد البيانات SQL Server Express على جهازه ، ومن ثم يقوم بربط قاعدة البيانات المستخدمة في برنامجك بالسيرفر ( هناك الكثير من الطرق لربط قواعد البيانات بالسيرفر منها اليدوي ومنها عن طريق برنامجك في أول تشغيل له ومنها عن طريق برنامج صغير يرفق مع برنامجك لربط قواعد البيانات من نوع SQL Server ) ابحث عن ذلك في المنتدى ستجد الكثير من المشاركات.
هنا يأتي دور المستخدم لتعريف برنامجك بطريقة الاتصال بالسيرفر وهل هو موجود على الكمبيوتر المحلي ( أي على نفس الكمبيوتر الموجود عليه برنامجك ) أم على كمبيوتر خادم ، وهل طريقة الاتصال بقاعدة البيانات في حال كانت على كمبيوتر خادم ستكون من خلال الـ IP Address أم من خلال اسم الكمبيوتر الخادم ؟.
فكيف تتيح تلك الخيارات للمستخدم ( تابع معي الشرح لتعرف ذلك ) .
في البداية سوف ننشأ قاعدة بيانات Access نضع فيها خيارات المستخدم ونستدعيها عند الحاجة ( تجدر الإشارة إلي أنه يمكنك أن تحفظ خيارات المستخدم في ملف تسجيل ويندوز ( الريجيستري ) ).
لكننا سوف نتبع الطريقة الأولى ففيها سنأخذ فكرة أيضاً عن طريقة الاتصال بقاعدة بيانات Access .
قم بفتح برنامج Access ومن ثم أنشئ قاعدة بيانات فارغة سمها ( Settings ) وأحفظها في مجلد باسم ( Databases ) في نفس مسار برنامجك .
الآن سنقوم بإنشاء جدول في قاعدة البيانات التي قمنا بإنشائها للتو باسم (ConnectionToServer ) حقولها كالتالي :-
1- OnLocalComputer نوع بياناته ( نعم/لا )
2- OnComputerServer نوع بياناته ( نعم/لا )
3- ServerIPAddress نوع بياناته ( نص )
4- ServerName نوع بياناته ( نص )
أغلق برنامج Access وشغل برنامج Microsoft Visual Studio 2005 .
أنشئ مشروع جديد أو افتح مشروع برنامجك الذي تود إضافة طرق الاتصال إليه .
أضف وحدة نمطية ( Module ) لمشروعك وسمي هذه الوحدة النمطية باسم (MdlConnection ) ، وذلك بفتح قائمة Project ثم Add Module … ، أحفظ الوحدة النمطية بجوار ملفات مشروعك .
في قسم التصريحات العامة في الـ Module اكتب التالي :-
'==================================================| 'هذا المديول يقوم بعمل اتصال عام لقواعد البيانات | 'ونستطيع الوصول لهذا الاتصال من أي مكان بالبرنامج | '==================================================| Option Explicit On Imports System.Data Imports System.Data.SqlClient Imports System.Data.OleDb Imports Microsoft.VisualBasic Imports System.IO
شرح الكود :-
قمنا باستيراد مجالات الأسماء الخاصة بالتعامل مع قواعد البيانات من SQL Server وقواعد البيانات من Access وأيضاً مجال الإدخال والإخراج .
وفي قسم التصريحات في الـ Module نكتب التالي :-
'المتغيرات العامة للاتصال بخادم قواعد البيانات Public GSQLConnection As New SqlConnection Public GSQLCmd As SqlCommand = GSQLConnection.CreateCommand Public GDA As SqlDataAdapter = Nothing Public GDR As SqlDataReader = Nothing Public GDS As New DataSet Public GDT As DataTable '---------------------------------------------------------------- 'المتغيرات المحلية والتي ستحمل نوع الاتصال بخادم قواعد البيانات ' وذلك بعد معرفة نوع الخادم وبياناته من قاعدة البيانات المحلية Dim LocalComputer As Boolean = False Dim ServerByIPAddress As Boolean = False Dim ServerByName As Boolean = False '============================== 'متغيران عامان يحملان قيمة عنوان الاي بي واسم السيرفر Public ServerIPAddress As String Public ServerName As String '---------------------------------------------------------------- 'المتغيرات الخاصة بالاتصال بقواعد بيانات أكسس أي المحلية 'متغير الاتصال الأساسي Dim WithEvents Cn As New OleDbConnection 'متغير نص الاتصال بقاعدة البيانات Dim CnStr As String 'متغير كائن الأوامر Dim WithEvents Cmd As New OleDbCommand 'متغير نص جملة الاستعلام Dim Sql As String 'متغير يحمل مجموعة السجلات Dim DR As OleDbDataReader
أعتقد أن الكود واضح ولا يحتاج إلي شرح بخلاف التعليقات .
بعدها نقوم بإنشاء إجراء عام كما في الكود التالي :-
Public Sub GeneralConnection() 'إجلب نوعية الاتصال من قاعدة البيانات المحلية Call GetConnection() 'فإذا كانت نوعيته من الخادم على الكمبيوتر المحلي If LocalComputer = True Then 'استدعي إجراء الاتصال بخادم قواعد البيانات على الكمبيوتر المحلي Call ConnectToLocalServerComputer() End If If ServerByIPAddress = True Then 'استدعي إجراء الاتصال بخادم قواعد البيانات عن طريق عنوان الأي بي Call ConnectToIPAddressServerComputer() End If If ServerByName = True Then 'استدعي إجراء الاتصال بخادم قواعد البيانات عن طريق اسم السيرفر Call ConnectToNameServerComputer() End If End Sub
شرح الكود :-
هذا الإجراء هو الإجراء العام للاتصال بقاعدة البيانات والذي سوف نستدعيه من أي مكان في المشروع .
وأول سطر في هذا الكود (Call GetConnection() ) يقوم باستدعاء إجراء أخر سنقوم بكتابته وهو معرفة خيارات المستخدم من قاعدة بيانات Access التي تم إنشائها سابقاً .
السطر الذي يليه نستفهم من المتغير LocalComputer عما إذا كانت قاعدة البيانات على نفس الكمبيوتر المحلي عندها استدعي الإجراء الخاص بالاتصال بقاعدة البيانات على الكمبيوتر المحلي ( Call ConnectToLocalServerComputer() )وسوف نقوم بكتابة هذا الإجراء لاحقاً .
أما إذا كان المتغير الخاص بالاتصال بقاعدة البيانات من خلال الـ IP Address قيمته تساوي نعم فعندها استدعي الإجراء الخاص بالاتصال بقاعدة البيانات عن طريق الـIP Address والذي سوف نقوم بكتابته لاحقاً .
أما إذا كان المتغير الخاص بالاتصال بقاعدة البيانات من خلال اسم الكمبيوتر الخادم قيمته تساوي نعم فعندها استدعي الإجراء الخاص بالاتصال بقاعدة البيانات عن طريق اسم الكمبيوتر الخادم والذي سوف نقوم بكتابته لاحقاً .
والآن سنقوم بكتابة الإجراء الذي يحتوي على الاتصال بقواعد بيانات Access لمعرفة خيارات المستخدم :-
Public Sub GetConnection()
'==========================================================|
'إجراء معرفة نوعية الاتصال هل من خادم محلي أما من خادم شبكة |
'==========================================================|
Try
CnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:DataBase Password=MyPassowrd;" & "Data Source=" & Application.StartupPath & "\Databases\Settings.mdb;"
Cn.ConnectionString = CnStr
Cn.Open()
Cmd.Connection = Cn
Sql = "SELECT* FROM ConnectionToServer"
Cmd.CommandText = Sql
DR = Cmd.ExecuteReader()
DR.Read()
If DR.Item("OnLocalComputer") = True Then
LocalComputer = True
Else
LocalComputer = False
End If
If LocalComputer = False Then
If DR.Item("ServerIPAddress") IsNot System.DBNull.Value Then
ServerByIPAddress = True
ServerIPAddress = DR.Item("ServerIPAddress")
End If
If DR.Item("ServerIPAddress") = "" Then
ServerByIPAddress = False
ServerByName = True
ServerName = DR.Item("ServerName")
End If
End If
DR.Close()
Catch Ex As Exception
MsgBox(Ex.Message, MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = True + MsgBoxStyle.MsgBoxRtlReading = True + MsgBoxStyle.OkOnly, "ضع هنا اسم برنامجك")
Finally
Cn.Close()
End Try
End Subشرح الكود :-
نقوم في هذا الإجراء بالاتصال بقاعدة البيانات Settings والتي قمنا بإنشائها سابقاً والتي من المفروض أن تكون في مجلد باسم Databases في نفس مجلد برنامجك .
قمنا بكتابة نص الاتصال بقاعد البيانات سوف أسندنا نص الاتصال للمتغير Cn ومن ثم قمنا بإسناد هذا المتغير لكائن الأوامر Cmd ، ثم كتبنا نص الاستعلام الذي يحدد كل الحقول من جدول ConnectionToServer التي قمنا بإنشائها عند إنشاء قاعدة البيانات .
ثم قمنا بمعرفة الخيارات من خلال قارئ البيانات Data Reader ، ثم أسندنا الخيارات الموجودة في قاعدة البيانات إلى المتغيرات التي تحدد الاتصال بقاعدة البيانات والتي تم شرحها سابقاً .
والآن هيا لنكتب الإجراء الخاص بالاتصال بقاعدة بيانات SQL Server من خلال الكمبيوتر المحلي ( أي نفس الكمبيوتر الذي يعمل عليه برنامجك ) .
Public Sub ConnectToLocalServerComputer() '==========================================================| 'إجراء الاتصال بخادم قواعد البيانات المحلي | '==========================================================| 'اجعل نص الاتصال هو الاتصال بالخادم المحلي Try GSQLConnection.ConnectionString = "Data Source=" + My.Computer.Name + "\SQLExpress;Initial Catalog=Luxorsystems;Integrated Security=SSPI;" GSQLConnection.Open() Catch Ex As Exception MsgBox(Ex.Message, MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = True + MsgBoxStyle.MsgBoxRtlReading = True + MsgBoxStyle.OkOnly, "هنا اكتب اسم برنامجك") End Try End Sub
هذا الإجراء بالاتصال بقاعدة بيانات SQL Server مستخدماً مجال الأسماء MY ومن سم اسم الكمبيوتر كما في المقطع التالي (My.Computer.Name ) .
ملاحظة :-
في نص الاتصال تجد المقطع التالي Catalog=Luxorsystems وهذا هو اسم قاعدة البيانات المطلوب الاتصال بها ( أنا سميت قاعدة البيانات LuxorSystems ويمكنك استبدالها باسم قاعدة بياناتك .
ثم قمنا بفتح الاتصال بقاعدة البيانات .
والآن هيا بنا لنكتب الإجراء الذي يتصل بقاعدة البيانات من خلال الـ IP Address .
Public Sub ConnectToIPAddressServerComputer() '==========================================================| 'إجراء الاتصال بخادم قواعد البيانات عن طريق عنوان الأي بي | | '==========================================================| Try 'نص الاتصال بقواعد البيانات GSQLConnection.ConnectionString = "Data Source=" + ServerIPAddress + "\SQLExpress;Network Library=DBMSSOCN;Initial Catalog=Luxorsystems;Integrated Security=SSPI;" GSQLConnection.Open() Catch Ex As Exception MsgBox(Ex.Message, MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = True + MsgBoxStyle.MsgBoxRtlReading = True + MsgBoxStyle.OkOnly, "هنا اكتب اسم برنامجك") End Try End Sub
هنا استخدمنا في نص الاتصال المتغير ServerIPAddress والذي يحمل قيمته من قاعدة بيانات Access وهو خيار المستخدم .
ملاحظة :-
في نص الاتصال تجد المقطع التالي Catalog=Luxorsystems وهذا هو اسم قاعدة البيانات المطلوب الاتصال بها ( أنا سميت قاعدة البيانات LuxorSystems ويمكنك استبدالها باسم قاعدة بياناتك .
ثم قمنا بفتح الاتصال بقاعدة البيانات .
والآن هيا بنا لنكتب الإجراء الذي يتصل بقاعدة البيانات من خلال اسم الكمبيوتر :-
Public Sub ConnectToNameServerComputer() '==========================================================| 'إجراء الاتصال بخادم قواعد البيانات عن طريق اسم السيرفر | | '==========================================================| Try 'نص الاتصال بقواعد البيانات GSQLConnection.ConnectionString = "Data Source=" + ServerName + "\SQLExpress;Initial Catalog= LuxorSystems;Integrated Security=SSPI;" GSQLConnection.Open() Catch Ex As Exception MsgBox(Ex.Message, MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = True + MsgBoxStyle.MsgBoxRtlReading = True + MsgBoxStyle.OkOnly, " هنا اكتب اسم برنامجك") End If End Try End Sub
هنا استخدمنا في نص الاتصال المتغير ServerName والذي يحمل قيمته من قاعدة بيانات Access وهو خيار المستخدم .
ملاحظة :-
في نص الاتصال تجد المقطع التالي Catalog=Luxorsystems وهذا هو اسم قاعدة البيانات المطلوب الاتصال بها ( أنا سميت قاعدة البيانات LuxorSystems ويمكنك استبدالها باسم قاعدة بياناتك .
ثم قمنا بفتح الاتصال بقاعدة البيانات .
إلى هنا نكون قد قمنا بكتابة كل الإجراءات الخاصة بالـ Module الخاص بالاتصال بقواعد البيانات .
والآن هيا بنا لنصمم النافذة التي ستتلقى خيارات المستخدم ومن ثم حفظها في قاعدة البيانات Access ويمكنك أن تجعها تظهر في أول مرة تشغيل لبرنامجك .
صمم النافذة كما بالشكل التالي مستعيناً بالمعلومات التالية:-
1- ضع على النافذة ( صندوق مجموعة ) Group Box وغير قيمة الـ Text إلي (خيارات خادم قواعد البيانات ) .
2- ثم ضع داخل ( صندوق المجموعة ) أداة RadioButton ثم غير خاصية Name إلي RdoLocalComputer وغير قيمة الـ Text إلي ( على الكمبيوتر المحلي ).
3- ثم ضع داخل ( صندوق المجموعة ) أداة RadioButton أخرى ثم غير خاصية Name إلىRdoServerComputer وغير قيمة الـ Text إلي ( على الكمبيوتر الخادم ).
4- ضع حاوية ( Panel ) فارغة أسفل الأدوات السابقة وذلك حتى نتمكن من عمل مجموعتين من أدوات Radio .
5- ثم ضع داخل ( الحاوية ) أداة RadioButton ثم غير خاصية Name إليRdoServerIPAddress وغير قيمة الـ Text إلى (عنوان IP الخادم :- ).
6- ثم ضع داخل ( الحاوية ) أداة RadioButton أخرى ثم غير خاصية Name إلي RdoServerName وغير قيمة الـ Text إلى (اسم الخادم :-).
7- ضع بجوار الـ RadioButton الأولى في الحاوية أداة ( مربع نص ) Text Box ثم غير خاصية Name إلى TxtServerIPAddess ثم اجعل خاصية Enabled = False .
8- - ضع بجوار الـ RadioButton الثانية في الحاوية أداة ( مربع نص ) Text Box ثم غير خاصية Name إلى TxtServerName ثم اجعل خاصية Enabled = False .
9- ضع (زري أوامر ) Command Button على النافذة وغير قيمة الـ Text للزر الأول إلى ( حفظ ) والثاني إلى ( إغلاق ) .
والآن نأتي لكتابة الكود لهه النافذة :-
انقر نقراً مزدوجاً على أداه الـ Radio المسماه RdoServerComputer والتي تحمل عنوان ( على الكمبيوتر الخادم )، وذلك لفتح نافذة الكود على خاصية RdoServerComputer_CheckedChanged واكتب الكود التالي :-
If RdoServerComputer.Checked = True Then RdoServerIPAddress.Enabled = True Me.TxtServerIPAddess.Enabled = True Me.RdoServerIPAddress.Checked = True Me.RdoServerName.Enabled = True Else Me.RdoServerIPAddress.Enabled = False Me.TxtServerIPAddess.Enabled = False Me.RdoServerName.Enabled = False Me.TxtServerName.Enabled = False End If
في هذا الكود نختبر اختيار المستخدم هل قام باختيار الخيار الثاني أي (على الكمبيوتر الخادم ) فإذا كان كذلك نقوم بجعل مربع النص الذي سيدخل فيه رقم IP Address نشطاً .
أما إذا رجع المستخدم عن اختياره واختار أداة الاختيار الأولى نجعل مربع النص (على الكمبيوتر الخادم ) غير نشط .
الآن انقر نقراً مزدوجاً على أداه الـ Radio المسماه RdoServerName والتي تحمل عنوان ( اسم الخادم )، وذلك لفتح نافذة الكود على خاصية RdoServerName_CheckedChangedواكتب الكود التالي :-
If RdoServerName.Checked = True Then Me.TxtServerName.Enabled = True Me.RdoServerIPAddress.Checked = False Me.TxtServerIPAddess.Enabled = False Me.TxtServerIPAddess.Clear() Else Me.TxtServerName.Enabled = False Me.TxtServerIPAddess.Enabled = True End If
نقوم في هذا الكود بمعرفة اختيار المستخدم فإذا اختار الخيار الثاني في الحاوية أي اختار (اسم الخادم :- ) حينها نقوم بإلغاء تنشيط مربع نص ( رقم IP Address ) وجعله غير نشط ومن ثم تنشيط مربع نص ( اسم الخادم ) ليكتب به المستخدم اسم الكمبيوتر الخادم .
في قسم التصريحات العامة في النافذة اكتب الكود التالي :
Option Explicit On Imports System.Data Imports System.Data.SqlClient Imports System.Data.OleDb Imports Microsoft.VisualBasic Imports System.IO Imports Microsoft.Win32
ثم اكتب في قسم التصريحات العامة للنافذة وتحت Public Class Form1 الكود التالي :-
'متغير الاتصال الأساسي Dim WithEvents Cn As New OleDbConnection 'متغير نص الاتصال بقاعدة البيانات Dim CnStr As String 'متغير كائن الأوامر Dim WithEvents Cmd As New OleDbCommand 'متغير نص جملة الاستعلام Dim Sql As String 'متغير يحمل مجموعة السجلات Dim DR As OleDbDataReader
والآن جاء دور كتابة كود زر ( حفظ ) لحفظ خيارات المستخدم في قاعدة بيانات Access .
انقر نقراً مزدوجاً على زر ( حفظ لفتح نافذة الكود على الخاصية Button1_Click ثم اكتب الكود التالي :-
Try
CnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:DataBase Password=MyPassowrd;" & "Data Source=" & Application.StartupPath & "\Databases\Settings.mdb;"
Cn.ConnectionString = CnStr
Cn.Open()
Cmd.Connection = Cn
If Me.RdoLocalComputer.Checked = True Then
Sql = "UPDATE ConnectionToServer SET OnLocalComputer=" & True & ",OnComputerServer=" & False & ",ServerIPAddress='" & Me.TxtServerIPAddess.Text & "'" & ",ServerName='" & Me.TxtServerName.Text & "'"
End If
If Me.RdoServerComputer.Checked = True Then
If Me.RdoServerIPAddress.Checked = True Then
Sql = "UPDATE ConnectionToServer SET OnLocalComputer=" & False & ",OnComputerServer=" & True & ",ServerIPAddress='" & Me.TxtServerIPAddess.Text & "'" & ",ServerName='" & Me.TxtServerName.Text & "'"
End If
If Me.RdoServerName.Checked = True Then
Sql = "UPDATE ConnectionToServer SET OnLocalComputer=" & False & ",OnComputerServer=" & True & ",ServerIPAddress='" & Me.TxtServerIPAddess.Text & "'" & ",ServerName='" & Me.TxtServerName.Text & "'"
End If
End If
Cmd.CommandText = Sql
Cmd.ExecuteNonQuery()
MsgBox("تم حفظ خيارات المستخدم في قاعدة البيانات", MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = True + MsgBoxStyle.MsgBoxRtlReading = True + MsgBoxStyle.OkOnly, "هنا اكتب اسم برنامجك")
Me.Button1.Enabled = False
Catch Ex As Exception
MsgBox(Ex.Message)
Finally
Cn.Close()
End Tryفي هذا الكود نقوم بحفظ خيارات المستخدم لاختياره لنوع خادم قواعد البيانات وذلك في قاعدة البيانات Access الموجودة في مجلد Databases الموجود بدوره في نفس مسار برنامجك.
اكتب الكود التالي في حدث النقر على زر أمر ( إغلاق ) لإغلاق نافذة خيارات خادم قواعد البيانات ومن ثم فتح نافذة الاتصال بقاعدة البيانات SQL Server :-
'اغلق النافذة الحالية واعرض نافذة دخول المستخدمين Me.Hide() Form2.ShowDialog()
ملاحظة :-
يجب في هذه المرحلة أن تقوم بعمل قاعدة البيانات SQL Server ومن ثم ربطها بخادم SQL Server Express ، كما يجب أن تحتوي قاعدة البيانات على جدول باسم / Users بها حقلين الحقل الأول سمه UserID والحقل الثاني سمه Password
الآن صمم النموذج الثاني كما بالشكل التالي :-
بحيث تجعل اسم القائمة التي سيكون فيها أسماء المستخدمين (CmbUserName ) وتجعل اسم مربع النص الذي يتلقى كلمات المرور باسم (TxtPassword ) ، ولا تنسى أن تجعل قيمة الخاصية Password Char لمربع النص ( * ) حتى لا تظهر كلمة المرور ككلمات ولكي تظهر نجوم.
اجعل اسم الأمر ( اتصال ) باسم (CmdConnect ) والأمر ( إلغاء الأمر ) باسم ( CmdCancel ) .
والآن سنكتب كود الأمر (اتصال ) ، انقر نقراً مزدوجاً على أمر اتصال لفتح نافذة الكود كما بالشكل التالي :-
CmdConnect.Enabled = False
Cursor = Cursors.WaitCursor
'التأكد من أن المستخدم قد اختار اسم مستخدم من القائمة
If Me.CmbUserName.Text = "" Then
MsgBox(" من فضلك .. اختر اسم المستخدم من القائمة ", MsgBoxStyle.Information + MsgBoxStyle.OkOnly + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "اكتب اسم برنامجك")
CmdConnect.Enabled = True
Cursor = Cursors.Default
Exit Sub
End If
If Me.TxtPassword.Text = "" Then
MsgBox(" من فضلك .. اكتب كلمة المرور ", MsgBoxStyle.Information + MsgBoxStyle.OkOnly + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "اكتب اسم برنامجك")
CmdConnect.Enabled = True
Me.TxtPassword.Focus()
Cursor = Cursors.Default
Exit Sub
End If
'استدعاء الاتصال العام بقواعد بيانات السيرفر
Try
'معرفة حالة الاتصال العام فإذا كان غير مفتوح
If GSQLConnection.State <> ConnectionState.Open Then
'عندها استدعي إجراء الاتصال العام من مديول الاتصال
GeneralConnection()
End If
If GSQLConnection.State = ConnectionState.Open Then
GDR = Nothing
GSQLCmd.CommandType = CommandType.Text
GSQLCmd.CommandText = "SELECT* FROM Users WHERE UserID LIKE '" & Me.CmbUserName.Text & "%'"
GDR = GSQLCmd.ExecuteReader
GDR.Read()
'في حالة مساواة كلمة المرور المدخلة لكلمة المرور الموجودة في قاعدة البيانات
If GDR.Item("Password") = Me.TxtPassword.Text Then
MsgBox(" انت الآن متصل بقاعدة البيانات بنجاح ", MsgBoxStyle.Information + MsgBoxStyle.OkOnly + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "اكتب اسم برنامجك")
End If
'إغلق كائن قارئ البيانات
GDR.Close()
'-------------------------------------------------------
'-------------------------------------------------------
ElseIf GDR.Item("Password") <> Me.TxtPassword.Text Then
GSQLConnection.Close()
MsgBox(" من فضلك .. اكتب كلمة المرور الصحيحة ", MsgBoxStyle.Information + MsgBoxStyle.OkOnly + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "اكتب اسم برنامجك")
Me.TxtPassword.Focus()
GDR.Close()
End If
Catch ex As Exception
GSQLConnection.Close()
Finally
CmdConnect.Enabled = True
Cursor = Cursors.Default
End Tryواعتقد أن الكود سهل ولا يحتاج إلى شرح بخلاق التعليقات الموجودة فيه .
وهيا بنا لنكتب كود إجراء جلب اسماء المستخدمين من قاعدة البيانات ووضعهم في قائمة المستخدمين كما يلي :-
Public Sub UsersIDs() '==========================================================================| 'الإجراء الخاص بجلب كل أسماء المستخدمين ووضعهم في قائمة المستخدمين ' ذلك من قواعد بيانات الخادم '==========================================================================| 'استدعاء الاتصال العام بقواعد بيانات السيرفر Try Me.Cursor = Cursors.WaitCursor 'معرفة حالة الاتصال العام فإذا كان غير مفتوح If GSQLConnection.State <> ConnectionState.Open Then 'عندها استدعي إجراء الاتصال العام من مديول الاتصال GeneralConnection() End If If GSQLConnection.State = ConnectionState.Open Then GDR = Nothing GSQLCmd.CommandType = CommandType.Text GSQLCmd.CommandText = "SELECT* FROM Users" GDR = GSQLCmd.ExecuteReader Do While GDR.Read() CmbUserName.Items.Add(GDR.GetSqlString(0)) Application.DoEvents() Loop GDR.Close() GSQLConnection.Close() Me.Cursor = Cursors.Default End If Catch Finally Me.Cursor = Cursors.Default GSQLConnection.Close() End Try End Sub
والآن نستدعي الإجراء الأخير في حدث تحميل النافذة كما يلي :-
Call UsersIDs()
والآن اكتب حدث النقر على أمر ( إلغاء الأمر ) بنفسك .
بها نكون قد انتهينا من مشاركتنا هذه وانتظروا قريبا شرح كيفية عمل إنشاء – نسخ احتياطي – استرجاع النسخ الاحتياطي – ربط قواعد البيانات – فك الربط لقواعد البيانات ، والكثير من الأشياء .
وفي النهاية أنا مستعد للإجابة عن أي استفسار حول هذه المشاركة
هذا والله أعلى وأعلم
مع تمنيات شركة الأقصر سيستمز للحلول البرمجية – للجميع بالتوفيق
مختار أحمد
مدير عام شركة الأقصر سيستمز للحلول البرمجية وتكنولوجيا المعلومات
www.luxorsystems.net
luxorsystems@hotmail.com