تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الفرق بين DataSet وDataTable
#1
السلام عليكم ورحمة الله وبركاته
أستخدم DataTable بكثرة وتفي بالغرض ولم أعرف متى أستخدم DataSet  مادامت موجودة في لغة الفيجوال لم توضع دون سبب.
سؤالي:
     متى أستخدم DataSet و DataTable ؟

تمنياتي للجميع بالتوفيق
الرد
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته

تفضل أخي راجع هذا الموضوع
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 
الرد
تم الشكر بواسطة: elgokr , baha , baha
#3
وعليكم السلام ورحمة الله وبركاته ،،

بإختصار :

DataSet = قاعدة بيانات مؤقتة تحمل عدة جداول فقط اثناء عمل البرنامج وتفقد البيانات بمجرد قفل البرنامج

DataTable = جدول اما ان يكون داخل الداتاسيت أو جدول مستقل لوحدة ايضاً مؤقت فقط اثناء عمل البرنامج وتفقد البيانات بمجرد قفل البرنامج

شرح الداتاسيت :


كود :
Dim dp As New System.Data.OleDb.OleDbDataAdapter("select * from table1", con)

        Dim ds As New DataSet

'هنا لاحظ الداتا ادابتر قام بتعبئة الداتاسيت بدون تحديد اسم للجدول
        dp.Fill(ds)
'هنا اسندنا الجدول الأول الذي يحمل انديكس صفر كمصدر للداتاقريد ولا بد من تحديد اسم الجدول أو رقم الإنديكس
        DataGridView1.DataSource = ds.Tables(0)


طيب لو افترضنا نريد ايضاً تبعئة الداتاسيت بجدول آخر مع الحفاظ بالجداول الموجودة في الداتاسيت


كود :
Dim dp As New System.Data.OleDb.OleDbDataAdapter("select * from table2", cn)

'لاحظ هنا لم ننشئ داتاسيت جديدة لأننا لو انشأناها جديدة سوف تفقد الجداول السابقة الموجودة بها
dim ds as new dataset #####

'لاحظ هنا الداتا ادابتر قام بتعبئة الداتاسيت بجدول بإسم تيبل2
        dp.Fill(ds, "table2")

'لإستخدام الجدول بإسمه كمصدر للداتاقريد يكون بالشكل هذا :
        DataGridView1.DataSource = ds.Tables("table2")

شرح الداتاتيبل :

ولو فقط لدينا جدول واحد مستقل ولا يوجد داتاسيت ولا نريد التعامل مع الداتاسيت يكون كالتالي :

كود :
Dim dp As New OleDbDataAdapter("select * from tb2", conn)
        Dim dt As New DataTable

'هنا الداتا ادابتر قام بتعبئة الداتاتيبل
        dp.Fill(dt)

'هنا اسندنا الداتاتيبل كمصدر للداتاقريد
       DataGridView1.DataSource = dt
الرد
#4
وعليكم السلام ورحمة الله وبركاته

ملخص واضافة لما قدمه كلا من اخوتى

الـ DataSet : تعنى قاعدة البيانات
والـ DataTable : هو الجدول الذى يتواجد داخل قاعدة البيانات

فلاحظ التالى لما تم من شرح للاخ حريف برمجة

كود :
' DataSet
dp.Fill(ds, "اسم قاعدة البيانات")
' DataTable
dp.Fill(dt)

لنقوم انك سميت اسم قاعدة البيانات باسم T1

عند استدعاء قيمة يتكون من DataSet تكون
كود :
TextBox1.Text = ds.tables("T1")(0)(0)

وعند استدعاء قيمة من DataTable تكون
كود :
TextBox1.Text = dt(0)(0)

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

تخيل انك تقوم بعمل عدد 3 استعلام ى زر واحد
فى طبيعة الحال بالمنط لو بتتعامل بـ DataTable هتنشاء لها 3 مثل
كود :
       Dim dt1 As New DataTable
       Dim dt2 As New DataTable
       Dim dt3 As New DataTable
'أو بهذا الشكل
       Dim dt1, d2, dt3 As New DataTable

عشان بنهاية الامر تعطي كل استعلام قيمها داخل كل منه هذا الشكل
كود :
       dp1.Fill(dt1)
       dp2.Fill(dt2)
       dp3.Fill(dt3)

طيب تعال نشوف هنا كده لو تم استخدم الكود نفسه بس بشكل مختلف
كود :
       dim ds As New DataSet

ثم تم ترحيل بيانات الاستعلام بهذا الشكل
كود :
       dp1.Fill(ds, "T1")
       dp2.Fill(ds, "T2")
       dp3.Fill(ds, "T3")

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

المفيد هنا ماذا : انك غير مجبر ان تجعل ى كل فروم عند زل زر او حدث لاستعلام ن تنشاء له DataTable
بل باختصار يمكنك عمل DataSet واحدة ى اول كود الفروم ويتم تعري كل استعلام لكل جدول داخل الـ DataSet

منها قللت من استهلاك موارد الجهاز واصبح البرنامج بشكل اكبر اسرع واخف

اتمنى ان الصورة والشرح يكون وافى وملخص ما تريد معرفته تماماً

تحياتى لك
وتمنياتى لك الوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
#5
بارك الله فيكم على المساعده ..
جزاكم الله خيراً وشكراً لكم أساتذة الكرام
[url=http://vb4arb.com/vb/member.php?action=profile&uid=30072][b]princelovelorn[/b]
[b]حريف برمجة[/b] 
[b]elgokr[/b] 

الله يوفقكم ويزيدكم من علمه
الرد
تم الشكر بواسطة: princelovelorn , elgokr
#6
الشكر لله
وجزاك الله كل خير

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
تم الشكر بواسطة: baha , baha


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] الفرق بين فيجول 2008 و2012 بالنسبة للكوادات الربط ب access test6 1 65 19-11-18, 05:31 PM
آخر رد: ابو يوسف النواوي 2
  ما الفرق بين ربط المشروع بقاعدة البيانات الأكسس أو بـ Sql ؟ Hazem1 3 207 04-10-18, 12:33 AM
آخر رد: ابراهيم ايبو
  الفرق بين اكثر من وقت المتألق9 5 207 08-09-18, 07:13 PM
آخر رد: elgokr
  [سؤال] اريد كود اظهار الفرق بين التاريخن issamsaidd 13 662 06-06-18, 09:22 PM
آخر رد: issamsaidd
  كيف احسب الفرق بين التاريخين وهج الصحراء 4 394 05-05-18, 05:57 PM
آخر رد: محمد سالم المحترف
  هل من الممكن عمل dynamic dataset وربطها بالريبورت فيو sirnon 2 172 18-02-18, 06:26 AM
آخر رد: sirnon
  تقرير كريستال ريبورت ب dataset السيد الجوهري 1 218 12-02-18, 09:37 PM
آخر رد: Adrees
  [كود] إيجاد الفرق بين تاريخين محمد مسافر 8 8,309 12-02-18, 01:37 PM
آخر رد: أبووسم
  هل من الممكن بناء dataset تتغير وتطبيق التغيرات على ال reportviwer sirnon 0 150 05-02-18, 01:34 AM
آخر رد: sirnon
  سؤال فى الفرق بين وقتين nabil.1710 5 729 09-01-18, 01:11 AM
آخر رد: ابراهيم ايبو

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم