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

عدة تضاربات في فهم قواعد البيات

بدأه عمرو عماد في 7 أكتوبر 2012 · 4 رد · 881 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
Public Class Form1
    Dim Ds As New DataSet
    Dim SQL As String = "Select * from Groups"
    Dim DA As New OleDbDataAdapter(SQL, DB)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        DB.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" & Application.StartupPath & "\DB\Store.accdb"
        DB.Open()

        DB.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        DA.Fill(Ds, "Groups")

        DataGridView1.DataSource = Ds
        DataGridView1.DataMember = "Groups"

        DataGridView1.AllowUserToAddRows = True

    End Sub
End Class

السلام عليكم ورحمة الله وبركاته

مللت من كثرة قرائتي لقواعد البيانات بإستخدام الأدوا نكتولجي وأري أني لم أعد أتحمل كم هذه التضاربات فما أريده هو شخص يفهم مقصدي يفتك بهذه التضاربات حتي أمر هذه المرحلة التي توقفت عندها ولا أستطيع إستكمال ما بدأته

في الكود السابق أري أشيائا عجيبة :

  1. فقد قمت بتعريف متغير da وقمت بربطه ب db قبل فتح قاعدة البيانات
  2. قمت بغلق db connection ثم بعدها قمت بملئ متغير ds بجدول المجموعات
  3. سمحت datagridview بالسماح بالتعديل ولم تقم بالتغير داخل قاعدة البيانات سواء قبل إغلاق قاعدة البيانات أم لا
  4. ما الفائدة من DataAdapter فهو يشغل مساحة من الرام ولماذا لم نقم بإستخدام ال Dataset نفسها لتقوم بعمل DataAdapter أعتقد أن هذا قصور في اللغة
  5. هل يمكنني عمل fill ل DataSet بجدولين أو أكثر وكيف؟
  6. هل سأفهم Ado.net المتصل والمنفصل أن سأظل غارقا في هذه التضاربات؟؟
  7. متي أستخدم المنفصل ومتي أستخدم المتصل وما هي عيوب ومميزات كلا منهم

تم تعديل هذه المشاركة بواسطة عمرو عماد في 7 أكتوبر 2012 في 17:19

#2

السلام عليكم ورحمه الله وبركاته

اخي لا تقول مللت!! فما قرءناه عن هذه التقنية الا القليل, لو اردت التحدث عنها لجلسنا اكثر من سنه ولن نحيط بكل شيء فيها, ولا حياة بدون صعاب!!

سأقوم بايضاح النقاط التي استصعبت عليك:

1- بالتأكيد لابد تعريف معلومات الاتصال و معلومات الامر الذي سيتم تنفيذه, والا فما هو الامر الذي سيتم تنفيذه؟ وعلى اي قاعدة بيانات؟!!

2- اخي اجد ان هناك مشكلة في حدث التحميل!! لا داعي لفتح وغلق الاتصال في الوضع المنفصل Connection Less

3- اخي بالفعل سمحت للاداة بتعديل البيانات ولكن لم تحفظ هذه التعديلات في قاعدة البيانات, بمعنى اخر لم تسمح للـ DataSet بعكس التغييرات التي تم اجراءها على قاعدة البيانات

4- اخي هناك فرق بين الـ DataAdapter و الـ DataSet فالثاني ما و الا تمثيل للبيانات التي تم جلبها من قاعدة البيانات في الذاكره, اما الاول فهو الوسيط او الجسر الذي يقوم بتعبءة البيانات من قاعدة البيانات الى الذاكرة واخذ جميع التغييرات من الذاكرة الى قاعدة البيانات, وكليهما يعملان في الوضع المنفصل, وليس هناك قصور في الـ DataSet لان غرضها الاساسي تمثيل للبيانات في الذاكرة واجراء العمليات اللازمه عليها من اضافة, تعديل, حذف .. الخ

5- يمكنك تعبئة الـ DataSet بأكثر من جدول وذلك باستدعاء الاجراء Fill مرتين ولكن عليك في كل مرة تغيير جملة الاختيار بالجدول المراد جلب البيانات منه

6- سأترك الاجابة عليك!!

7- عليك قراءة النوعين وفهمها اولا من ثم يمكنك الاجابة, واذا واجتك صعوبات فسوف اقوم بمساعدتك

.:: Wish to become better and better ::.

#3

VB Helper جزاك الله خيرا علي الإهتمام وإضاعة وقت في الرد علي الحائرين أمثالي :)

أخي في النقطة رقم 1 أنا أقصد أني قمت بتعريف متغير data adapter قبل أن أقوم بتحديد قاعدة البيانات أصلا فكيف عرفها في الخطة التي قمت بها بملئ متغير dataset

النقطة 2 تقصد لا حاجة لي بفتح قاعدة البيانات أصلا؟؟ ويكفيني تحديد ال connectionstring فقط؟

أخي في الله أري الموضوع غير مرتب بالنسبة لي وحتي كل المواضيع التي قرأتها غير مرتبه أم أنا المرتبك ذهنيا لا أعلم؟؟

أري أشياء غريبة في الأكواد لا أعرف لما وما أهميتها

أري طرق عديدة للجفظ والإضافة والتعديل والبحث والعرض ولا أعلم أيهما أستخدم

عندي كونفلكت رهيب جدا لأول مرة اشعر به

يبدوا أنني فشلت حقا

هل يوجد مانع لو تبرع أخ من الأخوة بعدة دقائق نتكلمهم علي الماسينجر صوتيا إن أمكن ليعلم مدي التضارب لدي لكن أرجوا أن يكون ذو صبر وصاحب خبرة لأن أسئلتي كثيرة

جزاكم الله خيرا وأعذروني لإلحاحي في هذه النقطة .. فلن أمررها بسهولة حتي أتيقن أن قد فهمت هذه المسألة

شكرا لكم

#4

السلام عليكم ورحمه الله وبركاته

اخي قبل ان تسأل ممكن تخبرني اين تعريف المتغير من نوع OleDbConnection؟

بالفعل لان الوضع المنفصل لا يحتاج لفتح واغلاق الاتصال

يمكنني مساعدتك بأي وسيلة باذن الله ..

.:: Wish to become better and better ::.

#5
Imports System.Data
Imports System.Data.OleDb



Module DBFunctions

    Public DB As New OleDbConnection()

    Public Function OpenDB(ByVal DBPath As String) As Boolean
        'Try
        DB.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" & DBPath
        DB.Open()
        Return True
        'Catch ex As Exception
        ' Return (False)
        'End Try
    End Function

    Public Function OpenRS() As Boolean

        Return False
    End Function
End Module

نعم نعم أخي أنا كنت أضعه في ميديول معه الدوال التي سوف أستخدمها في كل مرة لتبسيط الكود ولكني قبل وضع كودي في أول موضوع قمت بنقل بعض الكواد لتكون تحت نيم سبيس واحد حتي لا أقوم بوضع أتنين نيم سبيس عموا قمت بوضع الميدول الخاصة والتي فيها المتغير

يعني ما فيه مانع لو تحدثنا علي الماسنجر او سكايب وسأكون ممتن لحضرتك كثيرا .. وسأوضح لك كل التضاربات لدي فإن أمكن ذلك فهل لو ضعت بريدي او عنواني هل أكون مخالفا للقواعد وإن كانت الطريقة مخالفة فكيف أقوم بإرسال عنواني لك؟

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