يحتاج الى القليل من التعديل سوف اعدل فيه
مثل فصل كائن الاتصال ليكون مستقلا .
او جعل البارمترات لا يتم ارسالها في مصفوفة وانما يتم ادراجها مباشرة بالتوالي من مكان كتابة الكود اعتقد سيكون اسهل
مع بعض الاشياء الاخرى
ويحتاج الى اضافة بعض الاجراءات الاخرى مثل التي تجلب عدد السجلات او اكبر رقم تسلسلي او تقوم باحتساب مجموع وما الى ذلك
يمكنك فعل ما تشاء فى الكود
فهو لك
ولكن كل ما ذكرته لا حاجة لذلك لانك هنا انت عامل كلاس
وعملية الاستخدام سيكون عبارة عن سطر واحد فقط مثل
كود :
dt = con.select_txt("SELECT * FROM nameTable")
ستتمكن من استخدام كالتالى
كود :
dt(0)("id")
dt(0)("name")
وبخصوص العدد ابسطها دون عمل تكرار لاستعلام لجلب الرقم
فقط استخدم التالى
فتخيل ان فى زر تستخدم سطر و اتنين لعمل الاستعلام والاضافة والتعديل والحذف
بدلا من الاسطر من اتصال وفتح واغلاق وتحقق وما غير ذلك
الامر عائد لك فيما تريد الاستخدام وبطريقتك الخاصة
تحياتى لك
وتمنياتى لك التوفيق
بارك الله فيك
ملاحظة وسؤال واحد
لاحظت انك لم تسند القيمة لجملة الاتصال او اسم الاجراء واعتقد انك نسيت هذا سهواً
كود :
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
بخصوص عامل كود الـ الاضافة والتعديل والحذف او الاستعلام
انا جعلتها هنا ان تمرر من خلال قاعدة البيانات من خلال
فقط كل ما عليك عمل Query بقاعدة البيانات وتنشاء بها Proc لتمرير البلاميتر
والاسم اللى هتنشاء به الـ Proc هو ما سيكون مكان name_ عند استدعاء الـ Function
طبعاً اذا الامر هذا غير مناسب
فيمكنك بتعديل بسيط كما تفضلت وتجعل الـ Function بطريقة الـ Query بداخله او بدلاً من Name_
الفكرة من امر تصعيب اسلوب البلاميتر هنا هو لعدم
اتاحة اى مساحة للحقن لا من قريب ولا من بعيد
وكذلك لعدم اتاحة قراءة من يقتح السورس ما وظيفة الكود وهو لا يملك قاعدة البيانات
تحياتى لك
وتمنياتى لك التوفيق