Vb.net 搜索按钮出错
我搜索了一些关于如何在VB.net中执行搜索按钮的代码。但不知怎的,它不会工作,因为一个错误。仅仅是因为,我无法理解它的算法和功能。我是新手。无论如何,以下是搜索按钮的代码:Vb.net 搜索按钮出错,vb.net,ms-access,Vb.net,Ms Access,我搜索了一些关于如何在VB.net中执行搜索按钮的代码。但不知怎的,它不会工作,因为一个错误。仅仅是因为,我无法理解它的算法和功能。我是新手。无论如何,以下是搜索按钮的代码: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click myConnection.Open() crd.Clear() fn.Clear() ln.Clear() Dim st
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.OLEDBEException”的未处理异常
附加信息:没有为一个或多个必需参数提供值
这是你获取代码的链接吗 请不要让代码读取输出显示的每个数据,也请检查代码的这一部分
crd.Text = dr("crd").ToString
fn.Text = dr("fName").ToString
ln.Text = dr("lName").ToString
是否确定crd、fname、lname
是表中字段的名称?请检查它,以及代码的字段类型是什么?
是自动递增的文本还是INT?或者只是一个INT?无论是什么,都要更改代码
从
str=“从tblReg中选择*,其中(code=”&src.Text&“)”
到
str=“从tblReg WHERE code=“&src.Text”中选择*
更新
我建议更好地阅读或遵循基于链接的整个说明,在那里你得到你的代码。我建议按照链接所说的做,创建相同的,当程序运行时没有错误,然后将其与您的程序合并,因为我使用VB.NET和Access尝试了它,它工作了,我确定您没有阅读它。这样做,我相信你不仅会得到你需要的代码,你还将学习。一个人不应该遵循教授非常糟糕代码的在线教程。非常糟糕,因为它包含并保持数据库对象处于打开状态
您应该按照以下方式重写代码:
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
将OleDbType.VarChar更改为实际的列类型。可能的重复:@DanielShillcock OP的值周围已经有单引号。@GSerg和ifsrc.Text
包含撇号?;-)OP应该使用参数化查询。比撇号更糟糕的是;升降台tblReg
@danielshillock则这将是一个无效的SQL表达式错误,除非src.Text
,否则将不会有任何错误。他们应该使用,只是特定的问题不是相关的。是的。它们是我所在领域的名称。我检查了三遍。什么code
?哈哈哈。>谢谢D“从tblReg中选择*,其中code=“&src.Text
用thisOh替换您的代码。可以我还有一个问题,tblReg是我的表名。我是否要更换它?因为我需要从crd字段中获取信息。您将获取这些数据的表的名称是什么?我认为没有什么好笑的?我也和你一样,皮诺,那么你的意思是你点击一张卡片,点击卡片后,数字显示在文本框中?好的,我试试那个。非常感谢您。:>我仍然在dr=cmd.ExecuteReader()
上收到错误,另外,当我替换OleDbType.Varchar
时,它将不接受它。您确定错误在cmd.ExecuteReader
上,您用什么替换了它?