积极答复者
用do while loop 遍历结果集是问什么总是得不到第一条记录呢?

问题
-
大家好,请大家帮忙看看我这段代码用 do while loop 循环遍历结果应该用三条记录的,为什么能得到后两条而得不到第一条记录呢?
Dim meorystream As System.IO.MemoryStream Dim dbConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\Picture.mdb;Persist Security Info=True;Jet OLEDB:Database Password=lt;" Dim dbConnection As OleDbConnection = New OleDbConnection(dbConnectionString) dbConnection.Open() Dim dbcommand As OleDbCommand Dim str As String str = "select picimage from picInfo where piclx= '" & lx & "' and picname= '" & name & "' and picformat = '" & format & "' and pictime = '" & time & "'" dbcommand = New OleDbCommand(str, dbConnection) Dim dr As OleDbDataReader = dbcommand.ExecuteReader If dr.Read = True Then Do While dr.Read<br/> msgbox(dr("picname")) Dim buffer As Byte() buffer = CType(dr("picimage"), Byte()) meorystream = New System.IO.MemoryStream(buffer) PictureBox1.Image = New System.Drawing.Bitmap(meorystream) meorystream.Dispose() Loop End If
昨夜西风凋碧树,独上高楼,望尽天涯路!- 已编辑 litianlt 2009年8月27日 8:02
答案
-
你好,当调用Read时就会读取下一条 所以你这里
If dr.Read = True Then
Do While dr.Read<br/> msgbox(dr("picname"))
Dim buffer As Byte()
buffer = CType(dr("picimage"), Byte())
meorystream = New System.IO.MemoryStream(buffer)
PictureBox1.Image = New System.Drawing.Bitmap(meorystream)
meorystream.Dispose()
Loop
End If
应该改为
Do While dr.Read
msgbox(dr("picname"))
Dim buffer As Byte()
buffer = CType(dr("picimage"), Byte())
meorystream = New System.IO.MemoryStream(buffer)
PictureBox1.Image = New System.Drawing.Bitmap(meorystream)
meorystream.Dispose()
Loop
Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond- 已建议为答案 肖小勇Moderator 2009年8月27日 8:14
- 已标记为答案 litianlt 2009年8月27日 8:21
全部回复
-
各位大侠,大家好我在用,看看我这段代码,为什么遍历不到第一调记录呢
If dr.Read = True Then Do While dr.Read MsgBox(dr("picname").ToString) Loop End If
昨夜西风凋碧树,独上高楼,望尽天涯路!- 已合并 Raymond TangModerator 2009年8月27日 8:14 重复
-
你好,当调用Read时就会读取下一条 所以你这里
If dr.Read = True Then
Do While dr.Read<br/> msgbox(dr("picname"))
Dim buffer As Byte()
buffer = CType(dr("picimage"), Byte())
meorystream = New System.IO.MemoryStream(buffer)
PictureBox1.Image = New System.Drawing.Bitmap(meorystream)
meorystream.Dispose()
Loop
End If
应该改为
Do While dr.Read
msgbox(dr("picname"))
Dim buffer As Byte()
buffer = CType(dr("picimage"), Byte())
meorystream = New System.IO.MemoryStream(buffer)
PictureBox1.Image = New System.Drawing.Bitmap(meorystream)
meorystream.Dispose()
Loop
Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond- 已建议为答案 肖小勇Moderator 2009年8月27日 8:14
- 已标记为答案 litianlt 2009年8月27日 8:21
-
非常感谢,请问什么方法可以得到dr中的记录的条数呢?
昨夜西风凋碧树,独上高楼,望尽天涯路!
你好不用谢 你可以根据OleDbDataReader的RecordsAffected 属性来获取有多少行
“已更改、插入或删除的行数;如果没有任何行受到影响或语句失败,则为 0;-1 表示 SELECT 语句。 ”
Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond