【发布时间】:2020-07-06 16:55:05
【问题描述】:
我搜索了一些关于如何在 VB.net 中执行搜索按钮的代码。但不知何故,由于错误,它不会工作。仅仅因为,我无法理解它的算法和功能。新手来了无论如何,这里是搜索按钮的代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
myConnection.Open()
crd.Clear()
fn.Clear()
ln.Clear()
Dim str As String
str = "SELECT * FROM tblReg WHERE (Code = '" & src.Text & "')"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
dr = cmd.ExecuteReader
While dr.Read()
crd.Text = dr("crd").ToString
fn.Text = dr("fName").ToString
ln.Text = dr("lName").ToString
End While
myConnection.Close()
End Sub
错误出现了:
dr = cmd.ExecuteReader
而VB说:
System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常
附加信息:没有为一个或多个必需参数指定值。
【问题讨论】:
-
@DanielShillcock OP 已经在值周围加上了单引号。
-
@GSerg 如果
src.Text包含撇号? ;-) OP 应该使用参数化查询。 -
比撇号更糟糕的是
'; Drop Table tblReg; -
@DanielShillcock 那么这将是一个无效的SQL表达式错误,除非
src.Textalso contains--,但是这样就完全没有错误了。他们应该使用parameterized queries,只是那个特定的问题不是相关的。