• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

高分救助!

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
...全文
103 点赞 收藏 18
写回复
18 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
有什么问题吗?
回复
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2004-10-28 04:03
社区公告
暂无公告