读书人

实现这个简单功能应该用什么对象?该如

发布时间: 2012-01-06 22:55:18 作者: rapoo

实现这个简单功能应该用什么对象?
一个页面上有一个输入框,3个Label.一个查询按钮。

我想实现在输入框中输入记录ID,点查询。3个Label显示相应记录值。

代码如下:

Imports System.Data
Imports System.Data.SqlClient
Partial Class _Default
Inherits System.Web.UI.Page
Dim conn As New SqlClient.SqlConnection
Dim comm As New SqlClient.SqlCommand
Dim dataread As SqlClient.SqlDataReader
Dim STR_conn = System.Configuration.ConfigurationManager.ConnectionStrings( "tzsb_jyConnectionString ").ToString()

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
conn = New SqlClient.SqlConnection(STR_conn)

End Sub


Protected Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click
conn.Open()
comm = New SqlClient.SqlCommand( "select 使用证编号,设备名称,使用单位 from T_SBXX_JYXX_NBTJZX WHERE SBID like '% " & TextBox2.Text & "% ' ", conn)
dataread = comm.ExecuteReader()
Label1.Text = dataread.Item( "使用证编号 ")
Label2.Text = dataread.Item( "设备名称 ")
Label3.Text = dataread.Item( "使用单位 ")
End Sub
End Class
(数据库中记录ID是唯一的,就是说查询出的记录只有一条的。)
运行後提示:Label1.Text = dataread.Item( "使用证编号 ")出错!
错误提示为:在没有任何数据时进行无效的读取尝试。

我想是不是这里不能用DataReader 啊?

大家 说我该怎么样实现这个简单的 功能啊 ?

[解决办法]
数据读取器(dataread)默认是在所有数据之前,必须先Read一下才能到第一行
[解决办法]
1.
当然可以使用 DataReader

2.
运行後提示:Label1.Text = dataread.Item( "使用证编号 ")出错!
________________
使用 DataReader 读取数据钱,请先调用其 Read 方法

dataread = comm.ExecuteReader()
Label1.Text = dataread.Item( "使用证编号 ")

> > > >
dataread = comm.ExecuteReader()
if dataread.read() = true then
Label1.Text = dataread.Item( "使用证编号 ")
Label2.Text = dataread.Item( "设备名称 ")
Label3.Text = dataread.Item( "使用单位 ")
end if


3.
(数据库中记录ID是唯一的,就是说查询出的记录只有一条的。)
_____________________________
既然是 ID,条件语句请不要使用 LIKE,LIKE 用于模糊查询,

comm = New SqlClient.SqlCommand( "select 使用证编号,设备名称,使用单位 from T_SBXX_JYXX_NBTJZX WHERE SBID like '% " & TextBox2.Text & "% ' ", conn)

> > >

comm = New SqlClient.SqlCommand( "select 使用证编号,设备名称,使用单位 from T_SBXX_JYXX_NBTJZX WHERE SBID = ' " & TextBox2.Text.Trim() & "% ' ", conn)



4.
VB 语法不熟悉,请注意更正


Hope helpful!



[解决办法]
要记得关闭数据库连接。
[解决办法]
给楼主提几点建议:

1. 既然使用了 command 对象,为什么不直接使用安全性高的 paramter 对象而仍旧拼接字
符型参数的字符串呢

2. 使用 reader 对象读数据时,使用的是游标的原理,当刚从数据库中读取完数据时,游标
的指针指的是第一行数据的上一行(就像以前的唱片一样,针还没放到唱片上)。Read这
个函数会干两件事,其一就是把指针移到下一行数据上,其二是判断能不能读到数据(第
一次用正好相当于从空的地方移到了第一行的位置)

3. 楼上的代码注释有错误: if 语句不论在 VB 中还是在 C# 中都只会被执行一次,不可能
达到“直到记录不存在”的效果

读书人网 >asp.net

热点推荐