المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : التعامل مع ال DataBase خطوة بخطوة بواسطة Ado.Net


محمد
09-01-2008, 10:33 PM
http://www.vb4arab.com/vb/images/icons/icon1.gif التعامل مع ال DataBase خطوة بخطوة.
السلام عليكم ورحمة الله وبركاتة

بسم الله الرحمن الرحيم والصلاة والسلام على رسول الله صلى الله عليه وسلم ،،

هنبد أن شاء الله خطوة بخطوة كل ال Operations التى نحتاج لهــا للتعامل مع ال DataBases من خلال
Ado.Net Disconnected Mode.

قواعد بيـــانات Access فقط.

اولا : عملية الربط بين ال DataBase و ال Controls.

نقوم باستيراد مجالات الاسماء الاتـــية :
Imports System.Data, System.Data.OleDb

قمنا بعملية استيراد مجالات الاسماء السابقة لاختصار الاكواد .

نقوم بتعريف المتغيرات الاتية وهى المسئولة عن الاتصال ونقل البيانات من مصدر البيانات ال DataSource .


Public ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source =" & Application.StartupPath & "\DataBaseName.mdb"
Public CON As New OleDbConnection(ConStr)
Public DS As New DataSet
Public SQLstr As String = "SELECT * FROM TableName"



شرح الكود السابق :

Public ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source =" & Application.StartupPath & "\DataBaseName.mdb"



هنا قمنا بتعريف متغير نصى String وقمنا بأسناد مزود البيانات Data Provider الخاص بقاعدة البيانات Access ويختلف مزود البيانات على حسب نوع قادة البيانات وقمنا ايضا باسناد ال File Path لل DataBase والموجودة داخل المجلد Bin >> Debug ،

لطريقة Application.StartupPath تعود بالملف الذى تم التصريح عنه والموجودة داخل المجلد السابق ذكرة.


Public CON As New OleDbConnection(ConStr)


قمنا هنا بالتصريح عن المتغير Con من نوع OledbConnection هذه الفئة مشمولة داخل مجال الاسماء System.Data والذى قمنا باستيرادة فى بداية المشرو حتى تنجنب كتابة اكواد مكررة حيث انك لن تستطيع مناداة هذه الفئة مباشرة الا من خلال استيراد مجالها او كتابتها بهذه الطريقة.


System.Data.OleDb.OleDbConnection


هذه الفئة هى المسئولة عن عملية الاتصال بين ال VB.net وقاعدة البيانات وهى تقوم بفتح الاتصال غلقة ويوجد بها طرق اضافية مثل State التى تعود بحالة قادة البيانات ( متصلة - مغلقة) ..
وقمنا بتمرير المتغير ConStr الذى يحمل مسار قاعدة البيانات وكذلك مزود البيانات الخاصة بها حتى نمكن Con من الاتصال بقاعدة البيانات.


Public DS As New DataSet


قمنا بالتصريح عن المتغير Ds وهو عبارة عن متغير من النوع DataSet وظيفتة القيام بعملية حفظ البيانات بداخلة بعد فتح قاعدة البيانات من خلال Con ونقل البيانات من خلال ال Adapter الذى سوف نقوم بالتصريح عنه ..

اكتب هذا الكود فى ال Form_Load


Try
CON.Open()
Dim DataAdapter1 As New OleDbDataAdapter(SQLstr, CON)
DataAdapter1.Fill(DS, "MainTABLE")
CON.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try




شرح الكود :


CON.Open()


هنا استخدمنا المتغير Con المسئول عن فتح الاتصال مع ال DB من خلال الطريقة Open.



Dim DataAdapter1 As New OleDbDataAdapter(SQLstr, CON)


فى الكود السابق قمنا بالتصريح عن متغير باسم DataAdapter1 من النوع OleDbDataAdapter وهو المسئول عن عملية نقل البيانات من ال DB الى ال DataSet اى المتغير DS الذى قمنا بالتصريح عنه سابقا.
المتغير DataAdapater1 يحتاج الى ارسال وسيطتين اثناء التصريح ( ليس اجباريا)
هذه الفئة معادة قيادتها Overrides اربع مرات.

يحتاج الى ارسال جمل الاستعلام التى سوف تنفذ على ال DB لنقل البيانات من خلال هذه الجملة سواء بشرط او نقل الجدول كليا ويحتاج ايضا الى ارسال كائن الاتصال Con الذى استخدمناه مسبقا فى عملية فتح الاتصال مع قاعدة البيانات.


DataAdapter1.Fill(DS, "MainTABLE")


هنا قمنا باستخدام الطريقة Fill لنقل البيانات نم ال DataBase الى الكائن DS >>> (DataSet)
ترسل وسيطاتة مثل الكود السابق اسم الكائن DataSet واسم الجدول المراد نقل البيانات منه.


CON.Close()


الان لاداعى لفتح الاتصال لان البيانات الموجودة داخل ال DataBase صارات داخل الكائن DS ولا حاجة لنا بالكائن Con.

اما بالنسبة لجملة ال SQL فهى جملة استعلام عادية لاستخلاص الجدول من ال DataBase.


بعد كتابة الكود داخل Form_Load الان انت جاهز لعملية ربط ادواتك الى تود عرض البيانات من خلالها.

مثــــال لاستخدام TextBox Control لعرض البيانات من خلالهـــا.



Me.TextBox.DataBindings.Add("Text", Me.DS, "TableName.FieldName")



هنا قمنا بربط ال Textbox من خلال الخاصية Text ( هى الخاصية التى نود العرض عليها ) وقمنا باختيار ال DataSet اى DS كمصدر للبيانات DataSource ومن ثم اختيار الحقل المراد ربطة بال TextbOX بنفس الصيغة السابقة.

مثــــال لاستخدام DataGridView Control لعرض البيانات من خلالهـــا.


Me.DataGridView1.DataSource = DS
Me.DataGridView1.DataMember = "TableName"



قمنا هنا بربط ال DataSource الخاص بال DataGridView بال DataSource الخاص بنا وهو DS
وقمنا بربط ال Member باسم الجدول.


الى هنـــا نكون قد انتهينا من عملية الربط.

محمد
09-01-2008, 10:36 PM
ناتى لعملية ال ADD :



الرمز PHP:

Try
Dim SavInto As New OleDb.OleDbCommand
Dim ConStr As String = _
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & _
Application.StartupPath & "\database.mdb"
Dim Conn As New OleDbConnection(ConStr)
SavInto.Connection = Conn
SavInto.CommandType = CommandType.Text
SavInto.CommandText = "INSERT INTO TableName(field1,field2)" & _
"values ('" & Textbox1.Text & "','" & textbox2.Text & "','" & textbox3.Text &"') "

Conn.Open()
SavInto.ExecuteNonQuery()
Conn.Close()
Me.TimerP.Enabled = True
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try




هنا قمنا بتعريف الاتـــــى :

المتغيرات فى هذا الكود نفس متغيرات عملية الربط ماعدا

Dim SavInto As New OleDb.OleDbCommand

صرحنا بالمتغير SavInto من النوع OleDbCommand لحمل جملة ال Insert وتنفيذهـــا.

وقمنا باسناد القيم المطلوبة الى طرقة :



SavInto.Connection = Conn
SavInto.CommandType = CommandType.Text




ثم



SavInto.ExecuteNonQuery()


لتنفيذ الاستعلام

ناتى لعملية ال Delete:



If MsgBox("هل تريد حذف السجل الحالي", MsgBoxStyle.OkCancel) = MsgBoxResult.Cancel Then
Exit Sub
End If
Dim SavInto As New OleDb.OleDbCommand
Dim DataAdapter1 As New OleDbDataAdapter(SQLstr, CON)
SavInto.Connection = CON
SavInto.CommandType = CommandType.Text
SavInto.CommandText = "DELETE FROM MainTable WHERE PartNum ='" & Trim(Me.PartNumberTextbox.Text) & "'"
CON.Open()
SavInto.ExecuteNonQuery()
DS.Clear()
DataAdapter1.Fill(DS, "MainTable")
CON.Close()
MsgBox("تمت عملية الحذف في قاعدة البيانات بنجاح")



اظن لايحتاج الى شرح نفس كود الاضافة مع تعديل جمل ال SQL.

عمليات الابحار Navigation

على التوالى


First
Previous
Next
Last

Me.BindingContext(DS, "TableName").Position = 0

Me.BindingContext(DS, "TableName").Position -= 1

Me.BindingContext(DS, "TableName").Position += 1

Me.BindingContext(DS, "TableName").Position = Me.BindingContext(DS, "TableName").Count - 1



أخوانى هذا مثال عملى اردت كتابتة حتى تتثنى لنا الفائدة جميعا ولم اشرح به اى شئ عن ال ADO على سبيل ان من يقرأ هذه المقالة على دراية بال Ado.Net

وللحديث بقية ان شاء الله مع انواع البحث وعملية التعديل

محمد
09-01-2008, 10:37 PM
http://www.4shared.com/file/14026880...neerAuday.html (http://www.4shared.com/file/14026880/f07e71f4/EngineerAuday.html)

وهذا مثال مبسط للمبتدئين add - delete - search - update مع الشرح وفر عليه تكلمة الدرس

اتمنى الافادة للجميـــــع.

محمد
09-01-2008, 10:38 PM
كود للبحث بين تاريخين..

Imports System.Data, System.Data.OleDb
Public Class Form3
Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source =" & Application.StartupPath & "\DataBase.mdb"
Dim Conn As New OleDbConnection(ConStr)
Dim DataSet1 As New DataSet
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim SQLstr As String = "SELECT * FROM TableName WHERE FieldName Between '" & Me.textbox1.Text & "' and '" & Me.textbox2.Text & "'"
Conn.Open()
Dim DataAdapter1 As New OleDbDataAdapter(SQLstr, Conn)
DataAdapter1.Fill(DataSet1, "TableName")
Conn.Close()
Me.DataGridView1.DataSource = DataSet1
Me.DataGridView1.DataMember = "TableName"
If Me.BindingContext(DataSet1, "TableName").Count = 0 Then
MsgBox("No Result, Please Try Again ")
Exit Sub
End If
End Sub




مع ضرورة تنسيق التاريخ


Dim x As String
Dim d As Date = CDate(TextBox1.Text)
x = Format(d, "dd/MM/yyyy")