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

احتاج لشرح كود يحتوي على بارميتر وجملةinsert SQL command

بدأه m00j في 26 يونيو 2011 · 7 رد · 870 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الإخوة الكرام لقدر ترجمت الشرح وبحثت عن الكود في الانترنت رغبة في وجود مثال يشرح الكود ولم أجد ما يفيدني .. لذا آمل أن يتفضل أحد المبرمجين شرح الكود بالتفصيل إن أمكن .

Private Sub UpdateDemographics(ByVal customerID As Integer, _
    ByVal demoXml As String, _
    ByVal connectionString As String)

    ' Update the demographics for a store, which is stored 
    ' in an xml column.
    Dim commandText As String = _
     "UPDATE Sales.Store SET Demographics = @demographics " _
     & "WHERE CustomerID = @ID;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(commandText, connection)

        ' Add CustomerID parameter for WHERE clause.                                                     <------------ هنا معيار يا ليت افهم كيف يستفيد منه هل يعتمد على اسم كائن في Form أم ماذا ؟ 
        command.Parameters.Add("@ID", SqlDbType.Int)                                         
        command.Parameters("@ID").Value = customerID

        ' Use AddWithValue to assign Demographics.
        ' SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml)                            <------------ هذي دالة مفيدة ولكن بصراحة لا افهمها واتمنى اتقنها خصوصا اذا استخدمها مع جملة استعلام الاضافة 

        Try
            connection.Open()
            Dim rowsAffected As Integer = command.ExecuteNonQuery()
            Console.WriteLine("RowsAffected: {0}", rowsAffected)

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Using
End Sub

رابط الكود : http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx

وهذا كود شبيه بالكود السابق يا سلام لو يتم شرحه أيضا :)

01
    Private Sub btnInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsert.Click
02
        Dim sql As String
03
        sql = "Insert into Players (playerno, name, birth_date) Values (@PlayerNo, @Name, @Birth_Date)"
04
        Dim cmd As New OleDbCommand(sql, cn)
05
        cmd.parameters.addwithvalue("@Name", txtPlayerName.Text)
06
        cmd.parameters.addwithvalue("@Birth_Date", txtBirthDate.Text)                          <------------ وش المفيد في هذه الدالة ولماذا يضيف @ قبل اسم الكائن وهل هو يعتمد على بيانات في كائن موجود في Form  هل كلامي صحيح ؟ 
07
        cmd.parameters.addwithvalue("@PlayerNo", txtPlayerNo.Text)
08
'        MsgBox(sql)
09
        If cn.State <> ConnectionState.Open Then cn.Open()
10
        cmd.ExecuteNonQuery()
11
    End Sub

تم تعديل هذه المشاركة بواسطة m00j في 26 يونيو 2011 في 00:20

#2

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

اخي المثالين السابقين يستخدما مفهوم تمرير الوسائط من خلال الاجراء AddWithValue حيث يتم تمرير اسم الوسيط وقيمته بدلا من الطريقة الكلاسيكية وهي الربط Concatenation التي يمكن تقود الي الاخطاء لو قللنا التركيز!!

تم تعديل هذه المشاركة بواسطة VB Helper في 26 يونيو 2011 في 17:59

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

#3

لكن اخي الفاضل VB Helper هل يمكن ان تشرح سطور الكود مشكورا ..

اخوك: إبراهيم

#4

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

اخي سوف اشرح الكود الثاني على حسب عنوان الموضوع, قمنا اولا بتعريف كائن امر يستقبل جملة ال SQL وفي حالتنا Insert وكائن الاتصال بقاعدة البيانات, ونلاحظ ان جملة ال SQL تحتاج الى وسائط نظرا لوجود متغيرات تبدأ بـ @ فقمنا بتعريف اسم الوسائط وقيمها ومن ثم تم فحص حالة الاتصال فاذا كان غير مفتوح قمنا بفتحه وباخير قمنا بتنفيذ الامر من خلال الاجراء ExecuteNonQuery

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

#5

شكرا لك على اهتمامك ,, وفي الحقيقة انا اطمع في مثال عملي للكود السابق ,, فكما يقولون دائما ,, بالمثال يتضح المقال لأني والله لا افهم إلا بمثال تطبيقي :) ,, اتمنى ان تتحملني

تم تعديل هذه المشاركة بواسطة m00j في 26 يونيو 2011 في 23:52

#6

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

اخي المشكلة ان موضوعك كيف اجعلة في مثال عملي اكيد بيكون نفس السابق ولكن الجدول بيختلف!! يعني ماغيرت شيء

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

#7

شاكر لك اخي على الرد ولو تتكرم تجيب على هذا السؤال :

هل جملة sql insert تاخد القيم التي ستضيفها من الحقول الموجودة في form كما هو موضح في الاسفل :

        cmd.parameters.addwithvalue("@Name", txtPlayerName.Text)

        cmd.parameters.addwithvalue("@Birth_Date", txtBirthDate.Text)                           

        cmd.parameters.addwithvalue("@PlayerNo", txtPlayerNo.Text)

تم تعديل هذه المشاركة بواسطة m00j في 27 يونيو 2011 في 20:32

#8

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

الجمله السابقه تقوم بتمرير بعض الوسائط من الفورم الى قاعدة البيانات

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

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