none
用do while loop 遍历结果集是问什么总是得不到第一条记录呢? RRS feed

  • 问题

  • 大家好,请大家帮忙看看我这段代码用 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
    
    
    请大家帮忙看看我这段代码用 do while    loop  循环遍历结果应该用三条记录的,为什么能得到后两条而得不到第一条记录呢?谢谢
    昨夜西风凋碧树,独上高楼,望尽天涯路!
    • 已编辑 litianlt 2009年8月27日 8:02
    2009年8月27日 8:00

答案

  • 你好,当调用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
    2009年8月27日 8:12
    版主

全部回复

  • 各位大侠,大家好我在用,看看我这段代码,为什么遍历不到第一调记录呢
    If dr.Read = True Then
             Do While dr.Read
                  MsgBox(dr("picname").ToString)
             Loop
    End If

    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年8月27日 7:52
  •     System.Data.SqlClient.SqlCommand cmd =new System.Data.SqlClient.SqlCommand
        string a=  cmd.ExecuteScalar();
    2009年8月27日 8:04
  • 你好,当调用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
    2009年8月27日 8:12
    版主
  • 你好,非常感谢您在百忙中帮我,
             请问你这个是得到第一条记录的代码吗,我想问的是用 do while    loop  循环能不能遍历出结果,我总是得不到第一条记录。
             再请教:怎样才可以得到dr.read中的记录条数呢?
    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年8月27日 8:17
  • 非常感谢,请问什么方法可以得到dr中的记录的条数呢?
    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年8月27日 8:22
  • 非常感谢,请问什么方法可以得到dr中的记录的条数呢?
    昨夜西风凋碧树,独上高楼,望尽天涯路!

    你好不用谢 你可以根据OleDbDataReader的RecordsAffected 属性来获取有多少行

    “已更改、插入或删除的行数;如果没有任何行受到影响或语句失败,则为 0;-1 表示 SELECT 语句。 ”
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月27日 8:30
    版主
  • 你好,非常感谢您在百忙中帮我,
             请问你这个是得到第一条记录的代码吗,我想问的是用 do while    loop  循环能不能遍历出结果,我总是得不到第一条记录。
             再请教:怎样才可以得到dr.read中的记录条数呢?
    昨夜西风凋碧树,独上高楼,望尽天涯路!

    今天头疼 不行了 晕 去休息了
    2009年8月27日 8:43