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

نسخة كاملة : لدي خطا في كود التعديل لمنظومه ارشيف الكتروني
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
Private Sub Button2_Click1(sender As System.Object, e As System.EventArgs) Handles ButEdit.Click
  cn.Open()

        Try
            Dim cmd As New SqlCommand
            cmd.Connection = cn
            cmd.CommandText = "update Sader1 set  mawdo_MasgS='" & mawdo_MasgS.Text & "', Sader_men='" & Sader_men.Text & "' , date_MasgS ='" & date_MasgS.Text & "', Sader_ela ='" & Sader_ela.Text & "', morfagatS='" & morfagatS.Text & "', Mostalem='" & Mostalem.Text & "' , sefa ='" & sefa.Text & "', namberphon ='" & namberphon.Text & "', websait='" & websait.Text & "', note='" & note.Text & "' where id_esaryS = '" & id_esaryS.Text & "'"
            cmd.ExecuteNonQuery()
            MsgBox("هل تريد تعديل بيانات ")
        Catch ex As Exception
            MsgBox(ex.Message.ToString)
            MsgBox("تم تعديل بيانات بنجاح ")
        End Try
        cn.Close()

يعطي مسج بهذا الخطأ
انصح باستخدام اسلوب ال Parameters لانه من ناحية أأمن ضد ال SQL Injection  ومن ناحية اخرى يسهل عملية اضافة بيانات ليست نصية كتاريخ او رقم مثلا بنوعهم الاصلي دون تحويلهم الى String :


كود :
      Dim CommandString As String = "update Sader1 set mawdo_MasgS = @mawdo_MasgS , Sader_men = @Sader_men , date_MasgS = @date_MasgS , Sader_ela = @Sader_ela , morfagatS = @morfagatS , Mostalem = @Mostalem , sefa = @sefa , namberphon = @namberphon  , websait = @websait , note = @note  where id_esaryS = @id_esaryS"

      Dim Command As New SqlCommand(CommandString, cn)

      Command.Parameters.AddWithValue("@mawdo_MasgS" , mawdo_MasgS.Text )
      Command.Parameters.AddWithValue("@Sader_men" , Sader_men.Text)
      Command.Parameters.AddWithValue("@date_MasgS" , date_MasgS.Value)
      Command.Parameters.AddWithValue("@Sader_ela" , Sader_ela.Text)
      Command.Parameters.AddWithValue("@morfagatS" , morfagatS.Text)
      Command.Parameters.AddWithValue("@Mostalem" , Mostalem.Text)
      Command.Parameters.AddWithValue("@sefa" , sefa.Text)
      Command.Parameters.AddWithValue("@namberphon" , namberphon.Text)
      Command.Parameters.AddWithValue("@websait" , websait.Text)
      Command.Parameters.AddWithValue("@note" , note.Text)
      Command.Parameters.AddWithValue("@id_esaryS" , Integer.Parse(id_esaryS.Text))

    cn.Open()
       Command.ExecuteNonQuery()
    cn.Close()

    MsgBox("تم تعديل بيانات بنجاح ")

ارجو الملاحظة ان اداة ال DateTimePicker نأخد منها قيمة التاريخ من الخاصية Value وليس Text 

وارجو الملاحظة ايضا اني افترضت ان كل اعمدة الجدول من نوع نصوص فيما عدا id_esaryS و date_MasgS ولا اعلم هل هذه هي الحالة ام لا ، ولكن يجب عند استخدام البرامترات ان تضع القيمة من نفس النوع في جدول قاعدة البيانات ، اذا كانت Integer نستخدم Integer.Parse وهكذا
(16-11-20, 02:56 PM)Anas Mahmoud كتب : [ -> ]انصح باستخدام اسلوب ال Parameters لانه من ناحية أأمن ضد ال SQL Injection  ومن ناحية اخرى يسهل عملية اضافة بيانات ليست نصية كتاريخ او رقم مثلا بنوعهم الاصلي دون تحويلهم الى String :


كود :
      Dim CommandString As String = "update Sader1 set mawdo_MasgS = @mawdo_MasgS , Sader_men = @Sader_men , date_MasgS = @date_MasgS , Sader_ela = @Sader_ela , morfagatS = @morfagatS , Mostalem = @Mostalem , sefa = @sefa , namberphon = @namberphon  , websait = @websait , note = @note  where id_esaryS = @id_esaryS"

      Dim Command As New SqlCommand(CommandString, cn)

      Command.Parameters.AddWithValue("@mawdo_MasgS" , mawdo_MasgS.Text )
      Command.Parameters.AddWithValue("@Sader_men" , Sader_men.Text)
      Command.Parameters.AddWithValue("@date_MasgS" , date_MasgS.Value)
      Command.Parameters.AddWithValue("@Sader_ela" , Sader_ela.Text)
      Command.Parameters.AddWithValue("@morfagatS" , morfagatS.Text)
      Command.Parameters.AddWithValue("@Mostalem" , Mostalem.Text)
      Command.Parameters.AddWithValue("@sefa" , sefa.Text)
      Command.Parameters.AddWithValue("@namberphon" , namberphon.Text)
      Command.Parameters.AddWithValue("@websait" , websait.Text)
      Command.Parameters.AddWithValue("@note" , note.Text)
      Command.Parameters.AddWithValue("@id_esaryS" , Integer.Parse(id_esaryS.Text))

    cn.Open()
       Command.ExecuteNonQuery()
    cn.Close()

    MsgBox("تم تعديل بيانات بنجاح ")

ارجو الملاحظة ان اداة ال DateTimePicker نأخد منها قيمة التاريخ من الخاصية Value وليس Text 

وارجو الملاحظة ايضا اني افترضت ان كل اعمدة الجدول من نوع نصوص فيما عدا id_esaryS و date_MasgS ولا اعلم هل هذه هي الحالة ام لا ، ولكن يجب عند استخدام البرامترات ان تضع القيمة من نفس النوع في جدول قاعدة البيانات ، اذا كانت Integer نستخدم Integer.Parse وهكذا
بارك الله فيك اخي ويسلمو علي المعلومة وجزاك الله كل خير