منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
لدي خطا في كود التعديل لمنظومه ارشيف الكتروني - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90)
+--- قسم : مكتبة أكواد المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=111)
+---- قسم : مكتبة أكواد .net (http://vb4arb.com/vb/forumdisplay.php?fid=117)
+---- الموضوع : لدي خطا في كود التعديل لمنظومه ارشيف الكتروني (/showthread.php?tid=36916)



لدي خطا في كود التعديل لمنظومه ارشيف الكتروني - khowla.goma - 15-11-20

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()

يعطي مسج بهذا الخطأ


RE: لدي خطا في كود التعديل لمنظومه ارشيف الكتروني - Anas Mahmoud - 16-11-20

انصح باستخدام اسلوب ال 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 وهكذا


RE: لدي خطا في كود التعديل لمنظومه ارشيف الكتروني - khowla.goma - 16-11-20

(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 وهكذا
بارك الله فيك اخي ويسلمو علي المعلومة وجزاك الله كل خير