給定值什麼是錯在這裏,我總是得到一些討厭的錯誤,即使我以前使用的相同的代碼工作。但是當我將它應用於其他形式時,它會給我上面的錯誤。 這裏是我的代碼:沒有一個或多個必需參數
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
下面是在按鈕的代碼,試圖更新數據:
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
什麼可能是錯在這裏?
看起來像SQL注入成熟的代碼(雖然不是DML,因爲Jet/ACE不能執行多個語句)。你真的應該使用參數。 – 2010-03-04 19:26:30
我從來沒有想過sql注入可能存在於通過vb.net創建的客戶端應用程序中。謝謝 – user225269 2010-03-05 00:37:23
對於Jet後端,風險很低,因爲唯一的風險是揭示了太多的數據(用戶試圖利用代碼放入一個表達式,所有行都將評估爲TRUE),但這可能是問題,特別是對於UPDATE,這可能最終會改變所有行中的數據,而不僅僅是所需的子集。 – 2010-03-05 20:54:37