لا بالعكس الشرط على حد علمي صحيح, وهذا في فورم أخر لتحديد الرو في الداتا قريد فيو
كود :
Private Sub DataGridView5_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView5.CellClick
Dim index As Integer
index = e.RowIndex
Dim selectedRow = DataGridView5.Rows(index)
14-06-19, 11:20 PM (آخر تعديل لهذه المشاركة : 14-06-19, 11:24 PM {2} بواسطة Rabeea Qbaha.)
مرحبا اخي
في البداية لدي كم ملاحظة
اولا قم بالعادة باعاده تسمية ال textboxs فمثلا بدل Textbox1
اجعل اسمة txt_username لكي تسهل على نفسك تتبع الكود و اسهل في التعديل.
ثانيا يجب استخدام Parameters في التعديل او الاضافة ليش ؟؟
نتخلص من مشاكل ال injection. شو يعني ؟؟
انت لديك في الاتي :
كود :
username ='" & TextBox1.Text & "'
لماذا استخدمنا ' text ' لانه نص، فالنفرض احد المستخدمين اسمة : Baraá
فقد استخدم 'في الاسم هكذا سيحدث خطاء في الكود الخاص بك.
الفائدة الاخرى ان الكود مرتب بشكل افضل و اسهل للتهديل والاضافة.
الملاحظة الثالثة : قم بالاتصال بالسيرفر مرة واحدة فقط ليس عليك كل مرة تطلب الاتصال بقاعدة البيانات تكتب جملة الاتصال،
قم بعمل class واضف اليه جمله الاتصال و استدعي الاتصال في بداية ال form و استخدم الاتصال، او على الاقل ضع الاتصال في اول ال form
وقم باستدعائة.
اخيرا هذا الكود الخاص فيك باستخدام ال Parameters
كود :
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim dbsource As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Application.StartupPath & "\database\Database112.mdb"
im conn = New OleDbConnection(dbsource)
If conn.State Is ConnectionState.Closed Then
conn.Open()
End If
Dim query As String = "Update Users set username=@username, password=@password, gender=@gender, birthday=@birthday, Address=@Address, Health_Status=@Health_Status, password_open_case=@password_open_case where user_id=@user_id"
Dim cmd As OleDbCommand = New OleDbCommand(query, conn)
cmd.Parameters.AddWithValue("@username", TextBox1.Text)
cmd.Parameters.AddWithValue("@password", TextBox2.Text)
cmd.Parameters.AddWithValue("@gender", ComboBox1.SelectedItem.ToString())
cmd.Parameters.AddWithValue("@birthday", DateTimePicker1.Value)
cmd.Parameters.AddWithValue("@Address", TextBox3.Text)
cmd.Parameters.AddWithValue("@Health_Status", TextBox4.Text)
cmd.Parameters.AddWithValue("@Health_Status", TextBox5.Text)
cmd.Parameters.AddWithValue("@user_id", My.Settings.deleted.ToString())
cmd.ExecuteScalar()
_con.con.Close()
MsgBox("save success")
My.Settings.edit = "yess"
End Sub
لكن لم افهم لماذا تاخذ رقم المستخدم من النصوص المحفوظه في الاعدادات ؟؟