给定值什么是错在这里,我总是得到一些讨厌的错误,即使我以前使用的相同的代码工作。但是当我将它应用于其他形式时,它会给我上面的错误。 这里是我的代码:没有一个或多个必需参数
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