我搜索了一些关于如何在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”类型异常
附加信息:没有给出一个或多个必需参数的值。
答案 0 :(得分:0)
不应该遵循教授非常糟糕代码的在线教程。 That code非常糟糕,因为它包含SQL injection并且打开了数据库对象。
您应该按如下方式重写代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
myConnection.Open()
crd.Clear()
fn.Clear()
ln.Clear()
Using cmd = New OleDbCommand("SELECT * FROM tblReg WHERE Code = ?", myConnection)
cmd.CommandType = CommandType.Text
With cmd.Parameters.Add(Nothing, OleDbType.VarChar, 50)
.Direction = ParameterDirection.Input
.Value = src.Text
End With
Using dr = cmd.ExecuteReader()
While dr.Read()
crd.Text = dr("crd").ToString
fn.Text = dr("fName").ToString
ln.Text = dr("lName").ToString
End While
End Using
End Using
myConnection.Close()
End Sub
您必须使用问号代替参数,因为您使用的是OleDbCommand
does not support named parameters。
将OleDbType.VarChar
更改为您的实际列类型。
答案 1 :(得分:-1)
这是您获取代码的链接吗?
http://www.visual-basic-tutorials.com/ReadFromAccess.htm
请不要在输出显示的每个数据上读取代码,并检查代码的这一部分。
crd.Text = dr("crd").ToString
fn.Text = dr("fName").ToString
ln.Text = dr("lName").ToString
您确定crd,fname,lname
是表格中字段的名称吗?请检查它以及code?
的字段类型是文本还是INT是自动增量?还是只是一个INT?无论它改变你的代码是什么。
这
str = "SELECT * FROM tblReg WHERE (Code = '" & src.Text & "')"
到
str = "SELECT * FROM tblReg WHERE Code =" & src.Text
更新
我建议您根据获取代码的链接更好地阅读或遵循整个说明。我建议做同样的链接说创建相同,当程序运行没有错误然后将其与您的程序合并,因为我尝试使用VB.NET和Access,它工作,我确定你不读它。这样做,我相信你不会只获得你需要的代码,你也将学习。