Có gì sai ở đây, tôi luôn gặp phải một số lỗi khó chịu ngay cả khi cùng mã mà tôi đã sử dụng trước đó. Nhưng khi tôi áp dụng nó cho các hình thức khác nó mang lại cho tôi những lỗi ở trên. đây là mã của tôi:không có giá trị nào được cung cấp cho một hoặc nhiều thông số bắt buộc
Imports System.Data.OleDb
Public Class Updater2
Public adminID As String
Public adminName As String
Public adminPass As String
Private con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;Jet OLEDB:Database Password=nrew123$%^;")
Private com As OleDb.OleDbCommand
Public Sub New()
con.Open()
com = New OleDb.OleDbCommand("Select * from admintable")
com.Connection = con
End Sub
Public Sub updates()
com.CommandText = "UPDATE admintable SET AdminName = '" & adminName & "', AdminPassS = '" & adminPass & "' WHERE ID = '" & adminID & "'"
com.ExecuteNonQuery()
End Sub
End Class
Và đây là đoạn code trong nút mà cố gắng để cập nhật dữ liệu:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
shikai.adminID = textbox1.text
shikai.adminName = TextBox4.Text
shikai.adminPass = TextBox3.Text
shikai.updates()
MsgBox("Successfully updated!")
End Sub
những gì có thể sai ở đây?
Có vẻ như mã chín cho SQL injection cho tôi (mặc dù không phải DML vì Jet/ACE không thể thực hiện nhiều câu lệnh). Bạn thực sự nên sử dụng các thông số. –
Tôi không bao giờ nghĩ rằng tiêm sql có thể tồn tại trong các ứng dụng của khách hàng được thực hiện thông qua vb.net. cảm ơn – user225269
Với kết thúc máy bay phản lực, rủi ro thấp, vì rủi ro duy nhất là tiết lộ quá nhiều dữ liệu (do người dùng cố gắng khai thác mã của bạn đưa vào biểu thức sẽ đánh giá TRUE cho tất cả các hàng), nhưng đó có thể là vấn đề trong và của chính nó, đặc biệt là với một UPDATE, mà có thể kết thúc thay đổi dữ liệu trong tất cả các hàng thay vì chỉ trong tập con được mong muốn. –