منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : من عنده مكتبة للتعامل مع قواعد البيانات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
يحتاج الى القليل من التعديل سوف اعدل فيه
مثل فصل كائن الاتصال ليكون مستقلا .
او جعل البارمترات لا يتم ارسالها في مصفوفة وانما يتم ادراجها مباشرة بالتوالي من مكان كتابة الكود اعتقد سيكون اسهل 
مع بعض الاشياء الاخرى
ويحتاج الى اضافة بعض الاجراءات الاخرى مثل التي تجلب عدد السجلات او اكبر رقم تسلسلي او تقوم باحتساب مجموع وما الى ذلك
يمكنك فعل ما تشاء فى الكود
فهو لك

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

كود :
dt = con.select_txt("SELECT * FROM nameTable")

ستتمكن من استخدام كالتالى
كود :
dt(0)("id")
dt(0)("name")

وبخصوص العدد ابسطها دون عمل تكرار لاستعلام لجلب الرقم
فقط استخدم التالى
كود :
dt.Rows.Count

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

الامر عائد لك فيما تريد الاستخدام وبطريقتك الخاصة

تحياتى لك
وتمنياتى لك التوفيق
بارك الله فيك 
ملاحظة وسؤال واحد

لاحظت انك لم تسند القيمة لجملة الاتصال او اسم الاجراء واعتقد انك نسيت هذا سهواً

كود :
Public Function select_stoe(name_ As String, prm() As SqlParameter) As DataTable
      Dim cmd As New SqlCommand
      cmd.CommandType = CommandType.StoredProcedure
      cmd.Connection = sqlcon
      open_con()
      For i As Integer = 0 To prm.Length - 1
          cmd.Parameters.Add(prm(i))
      Next
      Dim adp As New SqlDataAdapter(cmd)
      Dim dt As New DataTable
      dt.Clear()
      adp.Fill(dt)
      Return dt
      close_con()
  End Function

يعني مثل
كود :
cmd = New SqlCommand(txt_, sqlcon)

السؤال لو انني استخدمت كائن الاوامر من محول البيانات مباشرة ما الفرق بين الطريقتين

كود :
Public Function SelectSQL(ByVal StoredProcedureName As String, prm() As SqlParameter) As DataTable

       Dim adp As New SqlDataAdapter(StoredProcedureName, Con)
       adp.SelectCommand.CommandType = CommandType.StoredProcedure

                 Open()
           For i As Integer = 0 To prm.Length - 1
               adp.SelectCommand.Parameters().Add(prm(i))
           Next
           Dim dt As New DataTable
           dt.Clear()
           adp.Fill(dt)
           Return dt
           Close()

     

   End Function

اي بين الاجراء الاخير وبين الاجراء فوق
مرحباً اخى viv

لا يوجد اى سهو او نقص فى الكود 

كود الاتصال مدرج فى هذا السطر لـ الخاص بالبراميتر
كود :
     cmd.Connection = sqlcon

بخصوص عامل كود الـ الاضافة والتعديل والحذف او الاستعلام

انا جعلتها هنا ان تمرر من خلال قاعدة البيانات من خلال 
PHP كود :
StoredProcedure 


فقط كل ما عليك عمل Query بقاعدة البيانات وتنشاء بها Proc لتمرير البلاميتر
والاسم اللى هتنشاء به الـ Proc هو ما سيكون مكان name_ عند استدعاء الـ Function

طبعاً اذا الامر هذا غير مناسب
فيمكنك بتعديل بسيط كما تفضلت وتجعل الـ Function بطريقة الـ Query بداخله او بدلاً من Name_

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

تحياتى لك
وتمنياتى لك التوفيق
الصفحات : 1 2