الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

معلومة/ADO.NET

مغلق
بدأه SOLO.NET في 24 أكتوبر 2005 · 2 رد · 2,459 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ناقشنا فى حلقة سابقه اهم كائنات ADO.NET فى الوضع المتصل وهذا رابط الموضوعADO.NET, الوضع المتصل

وساحاول هنا القاء الضوء على كائنات ADO.NET للوضع المنفصل

كائن مهئ البيانات DataAdapter

وهو يعتبر بمثابة جسر بين مخزن البيانات وعناصر ado.net مثل مجموعة البيانات او الجداول فعن طريقة يتم الاتصال وسحب البيانات من مخزن البياانات وبعد ذلك يمكن التعديل فيها وارجاعها الى مخزن البيانات ايضا عن طريق مهئ البيانات ،وقد تم تصميمه خصيصا للعمل مع الوضع المنفصل حيث يتم تحميل البيانات الى جهاز العميل ومن ثم العمل عليها هناك

انشاء مهئ البيانات والتعامل معه:

يتم انشاء كائن مهئ البيانات من الفئةOleDbDataAdapter باستخدام الكلمة المحجوزة new وقد تم اعادة تعريفoverloadsمنشئ الفئة اكثر من مرة

Dim strConn As String = "Provider=SQLOLEDB;Data Source=(local);" & _
                        "Initial Catalog=Northwind;Trusted_Connection=Yes;"
Dim cn As New OleDbConnection(strConn)
Dim strSQL As String = "SELECT CustomerID, CompanyName FROM Customers"
Dim cmd As New OleDbCommand(strSQL, cn)
Dim da As New OleDbDataAdapter()
da.SelectCommand = cmd

s

فى الكود السابق قمنا بانشاء مهئ البيانات من دون تمرير اى معاملات فى منشئ الفئة لذا قمنا باسناد كائن امر للخاصية

SelectCommand وهى تمثل الامر الذى يقوم على اساسه باسترجاع البيانات

Dim strConn As String = "Provider=SQLOLEDB;Data Source=(local);" & _
                        "Initial Catalog=Northwind;Trusted_Connection=Yes;"
Dim strSQL As String = "SELECT CustomerID, CompanyName FROM Customers"
Dim da As New OleDbDataAdapter(strSQL, strConn)

فى الكود السابق قمنا بتمرير نص يمثل جملة sql التى سيقوم باسترجاع البيانات بناء عليها والمعامل الثانى هو نص الاتصال حيث يقوم مهئ البيانات بانشاء كائن اوامر ضمنيا عن طريقة يقوم بالاتصال

فى هذه الحاله اذا قمت بانشاء اكثر من مهئ بيانات فى البرنامج فانه سيقوم بانشاء اكثر من كائن اتصال ويمكن حل هذه المشكلة بانشاء كائن الاتصال اولا ونقوم بتمريره فى منشئ الفئة لمهئ البيانات

Dim strConn As String = "Provider=SQLOLEDB;Data Source=(local);" & _
                        "Initial Catalog=Northwind;Trusted_Connection=Yes;"
Dim cn As New OleDbConnection(strConn)
Dim daCustomers, daOrders As OleDbDataAdapter
daCustomers = New OleDbDataAdapter("SELECT ... FROM Customers", cn)
daOrders = New OleDbDataAdapter("SELECT ... FROM Orders", cn)

يمكن ايضا تمرير كائن اوامر لمنشئ الفئة

Dim strConn As String = "Provider=SQLOLEDB;Data Source=(local);" & _
                        "Initial Catalog=Northwind;Trusted_Connection=Yes;"
Dim cn As New OleDbConnection(strConn)
Dim strSQL As String = "SELECT CustomerID, CompanyName FROM Customers"
Dim cmd As New OleDbCommand(strSQL, cn)
Dim da As New OleDbDataAdapter(cmd)

استرجاع البيانات:

ويتم ذلك باستدعاء الطريقة Fill حيث يقوم مهئ البيانات بتنفيذ الاستعلام الموجود فى الخاصية SelectCommand وتخزين البيانات فى مجموعة بيانات DataSet

Dim strConn, strSQL As String
strConn = "Provider=SQLOLEDB;Data Source=(local);" & _
          "Initial Catalog=Northwind;Trusted_Connection=Yes;"
strSQL = "SELECT CustomerID, CompanyName, ContactName, Phone " & _
         "FROM Customers"
Dim da As New OleDbDataAdapter(strSQL, strConn)
Dim ds As New DataSet()
da.Fill(ds)

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

تم اعادة تعريفها فهى يمكن ان تاخذ معاملات بالشكل التالىFillايضا الطريقة

DataAdapter.Fill(DataSet, "MyTableName")

فى الكود السابق يتم تحديد اسم كائن جدول بيانات DataTable

DataAdapter.Fill(DataTable) حيث يمكن اضافة البيانات الى كائن DataTable سبق انشاءه مباشرة

OleDbDataAdapter.Fill(DataSet, AdoRecordset, "TableName")

OleDbDataAdapter.Fill(DataTable, AdoRecordset)

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

فتح واغلاق الاتصال:

باستخدام كائن مهئ الاوامر وعند استعاء كل من الطريقة Fill,UPDate اذا كان الاتصال مغلق يقوم مهئ الاوامر بفتح الاتصال ضمنيا وتنفيذ الاستعلام واسترجاع النتائج وبعد ذلك يقوم باغلاق الاتصال اذا لا داعى لفتح الاتصال فى كل مرة تريد استدعاء Fill,UPDate فسيقوم مهئ الاوامر بذلك نيابة عنك ولكن فى بعض البرامج قد تحتاج لاستدعاء الطريقة Fill عدة مرات متتالية وليس من المنطقى ترك مهئ الاوامر يقوم بفتح وغلق الاتصال فى كل مرة الحل هو ان تقوم بفتح الاتصال واستدعاء Fill وبعد ذلك غلق الاتصال

Dim strConn As String = "Provider=SQLOLEDB;Data Source=(local);" & _
                        "Initial Catalog=Northwind;Trusted_Connection=Yes;"
Dim cn As New OleDbConnection(strConn)
Dim daCustomers, daOrders As OleDbDataAdapter
daCustomers = New OleDbDataAdapter("SELECT ... FROM Customers", cn)
daOrders = New OleDbDataAdapter("SELECT ... FROM Orders", cn)
Dim ds As New DataSet()
cn.Open()
daCustomers.Fill(ds)
daOrders.Fill(ds)
cn.Close()

تنفيذ مجموعة استعلامات دفعة واحدة:

يمكن تنفيذ مجموعة من الاستعلامات دفعة واحدة(لابد ان تكون قاعدة البيانات تدعمها مثل sqlserver)

Dim strConn, strSQL As String
strConn = "Provider=SQLOLEDB;Data Source=(local);" & _
          "Initial Catalog=Northwind;Trusted_Connection=Yes;"
strSQL = "SELECT CustomerID, CompanyName, ContactName, Phone " & _
         "FROM Customers WHERE CustomerID = 'ALFKI'; " & _
         "SELECT OrderID, CustomerID, EmployeeID, OrderDate " & _ 
         "FROM Orders WHERE CustomerID = 'ALFKI'"
Dim da As New OleDbDataAdapter(strSQL, strConn)
da.TableMappings.Add("Table", "Customers")
da.TableMappings.Add("Table1", "Orders")
Dim ds As New DataSet()
da.Fill(ds)

فى الكود السابق قمنا بتنفيذ جملتى sql مرة واحدة وهى تقوم باسترجاع البيانات من جدول الزبائن وجدول الطلبات عند استدعاء الطريقة fill يقوم مهى البيانات بانشاء كائنى جدول بيانات فى مجموعة البيانات كل واحد يحتفظ بنتائج جملة استعلام

جمل الاستعلام التى تحتوى على معاملات:

نقوم باضافة نوع وحجم المعامل عن طريق الخاصية SelectCommand التى تحتوى على مجموعة Parameters وبعد ذلك يمكن استخدام الطريقةGetFillParameters لمهئ البيانات لاعطاء قيمة للمعاملات

Dim strSQL As String = "SELECT CustomerID, CompanyName " & _
                       "FROM Customers WHERE CustomerID LIKE ?"
da = New OleDbDataAdapter(strSQL, strConn)
da.SelectCommand.Parameters.Append("@CustomerID", _
                                   OleDbType.VarWChar, 5)
da.GetFillParameters(0).Value = "ALFKI"

استرجاع البيانات من اجراء مخزن لمجموعة بيانات

اذا كان لديك اجراء مخزن stored procedure ويقوم باسترجاع مجموعة من النتائج فيمكن جلب هذه النتائج عن طريق مهئ البيانات الى مجموعة البيانات لنفترض انه لدينا الاجراء المخزن التالى:

CREATE PROCEDURE GetAllCustomers AS

SELECT CustomerID, CompanyName, ContactName, Phone FROM Customers

RETURN

ويمكن استدعاء الاجراء المخزن السابق بكتابة جملة استدعاء الاجراء المخزن بدلا من جملة sql كالتالى

{CALL GetAllCustomers}

او

EXEC GetAllCustomers

كما يمكنك اسناد كائن امر يقوم بتنفيذ اجراء مخزن لمهئ البيانات وسبق شرحه

وللموضوع بقيـــــة.......... :rolleyes:

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#2

جزاك الله اخيرا

قد طرحت رد و لم تيجيبني اخي الكريم في رابط ال ado.net في الوضع المتصل

#3

مشكور

1.GIF

هذا الموضوع مغلق.

مواضيع مشابهة