高分救助!

xihao7707 2004-10-28 04:03:12
我要在输入textbox1.text中输入一个内容来查询显示text2,text3.text4内容

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If TextBox1.Text = "" Then
Response.Write("不能为空!")
Exit Sub
Else
Dim myread As OleDb.OleDbDataReader
OleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=E:\Downloads\vb2003\源程序\第七章 人员管理系统开发\人员管理系统\db1.mdb"
OleDbConnection1.Open()
nsql = "select * from dep where deptno='" & Trim(TextBox1.Text) & "'"
mycmd.Connection = OleDbConnection1
mycmd.CommandText() = nsql
myread = mycmd.ExecuteReader
myread.Read()
Dim yx As String = myread.Item(0)
If yx = TextBox1.Text Then
TextBox2.Text = myread.Item(1)
TextBox3.Text = myread.Item(2)
TextBox4.Text = myread.Item(3)
Else
Response.Write("输入的deptno有误")
Exit Sub
End If
End If
End Sub
...全文
127 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
goody9807 2004-10-28
  • 打赏
  • 举报
回复
If TextBox1.Text = "" Then
Response.Write("不能为空!")
Exit Sub
Else
Dim myread As OleDb.OleDbDataReader
OleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=E:\Downloads\vb2003\源程序\第七章 人员管理系统开发\人员管理系统\db1.mdb"
OleDbConnection1.Open()
nsql = "select * from dep where deptno='" & Trim(TextBox1.Text) & "'"
mycmd.Connection = OleDbConnection1
mycmd.CommandText() = nsql
myread = mycmd.ExecuteReader

if myread.Read() then
Dim yx As String = myread.Item(0)
If yx = TextBox1.Text Then
TextBox2.Text = myread.Item(1)
TextBox3.Text = myread.Item(2)
TextBox4.Text = myread.Item(3)
Else
Response.Write("输入的deptno有误")
Exit Sub
End If
End If
End If
aquariusdeng 2004-10-28
  • 打赏
  • 举报
回复
至少的先做个输入检测
不能输入非法字符

然后才开始查询

要使用查询得来的数据
先要检查有没有(比如你的查询结果是ds或者dt,先查一下返回的行数是不是大于0)
(用某个量之前先判断它存不存在是写程序的基本素养)

我没有用过datareader,但是相信里面还会是表,或者dataset,
你看一下它的正确返回和错误返回分别是什么样子就知道怎么判断了

大不了在你自己那一句myread.Item(0)出错的地方判断myread.Item(0)是不是NULL
我就不信你自己写不出来
  • 打赏
  • 举报
回复
DataReader.HasRows
可以指示是否存在记录
xihao7707 2004-10-28
  • 打赏
  • 举报
回复
哪该如何判断datareader里面的这个判断呢?
  • 打赏
  • 举报
回复
尽量不要用try,catch来处理吧,这样会很影响你的程序的性能。因为这个错误在正常操作下只是因为没有记录产生的,你可以控制这个错误,方法:查询后先检查datareader里面是否存在记录,如果不存在,就单独处理一下好了。
xihao7707 2004-10-28
  • 打赏
  • 举报
回复
谢谢!
xihao7707 2004-10-28
  • 打赏
  • 举报
回复
if myread.Read() then ... end if
该如何写这一条语句啊!
xiaohutushen 2004-10-28
  • 打赏
  • 举报
回复
当然要出错了。
比如你要输入‘等特殊字符就会出错。
或者类型不匹配。

你最好先判断输入是否是你需要的类型。
如果是在开始查询。
查询时加try catch
xihao7707 2004-10-28
  • 打赏
  • 举报
回复
好的我试试!
huangwenfeng 2004-10-28
  • 打赏
  • 举报
回复
没有加判断,
if myread.Read() then ... end if

你上面的程序,如果找不到数据时去读肯定会出错的。
dayasky 2004-10-28
  • 打赏
  • 举报
回复
Dim yx As String = myread.Item(0)
If yx = TextBox1.Text Then
TextBox2.Text = myread.Item(1)
TextBox3.Text = myread.Item(2)
TextBox4.Text = myread.Item(3)
Else
改成
If yx = TextBox1.Text Then
Dim yx As String = myread.Item(0)

TextBox2.Text = myread.Item(1)
TextBox3.Text = myread.Item(2)
TextBox4.Text = myread.Item(3)
Else
wudixiaocaoren 2004-10-28
  • 打赏
  • 举报
回复
如果胡乱输入的,系统找不到记录,就是说你的返回DATASET是空的,而你还要找myread.Item(0),里面什么都没有,当然出错了!可以考虑用Try catch 把你的代码包起来,当然也可以在用之前检查一下是不是等于null
xihao7707 2004-10-28
  • 打赏
  • 举报
回复
行 118: myread = mycmd.ExecuteReader
行 119: myread.Read()
行 120: Dim yx As String = myread.Item(0)//就是这一条出错!
行 121:
行 122: If yx = TextBox1.Text Then
xihao7707 2004-10-28
  • 打赏
  • 举报
回复
问题是:我如果在textbox1中任意输,它就抱错:页面句柄出错,如果输入正确,可以正常显示,是不是上面代码有问题!
wudixiaocaoren 2004-10-28
  • 打赏
  • 举报
回复
开发用的数据库要这样写:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(".\\教师填表.mdb")+";User Id=admin;Password=;" ;
baihecheng 2004-10-28
  • 打赏
  • 举报
回复
你的问题在哪里,说下下吗!让大伙好把注意力集到那儿吗!
wudixiaocaoren 2004-10-28
  • 打赏
  • 举报
回复
你的问题在哪里??
dayasky 2004-10-28
  • 打赏
  • 举报
回复
有什么问题吗?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧