当记录只有一行时,如何使sqlreader读取该记录?

nzrxty8p  于 2021-08-09  发布在  Java
关注(0)|答案(0)|浏览(168)

下面我有一个程序,读取一个表的内容,并在写出来之前对它们进行格式化。我有两个数组temp和values,因为表中的某些列的描述太长,跳到下一行id,它的最大字符数为80。
这是我的问题,当数据库中有多条记录时,我的程序工作正常。但是,当只有一个记录时,它就逃逸了。拜托,有人帮我解释一下,为什么数据库表中只有一条记录时,这个方法不起作用。

Try
    Using sw As New IO.StreamWriter(filepath, False)
        Dim values(SQLReader.FieldCount) As Object
        Dim temp(SQLReader.FieldCount) As Object
        Dim first As Boolean = True

        While SQLReader.Read()
            'Dim values(SQLReader.FieldCount) As Object
            SQLReader.GetValues(values)

            If values(12) IsNot DBNull.Value Then
                values(12) = Convert.ToDateTime(values(12)).ToString("yyyy-MM-dd HH:mm:ss:fff")
                values(15) = Convert.ToDateTime(values(15)).ToString("yyyy-MM-dd HH:mm:ss:fff")
            End If

            values(1) = Convert.ToDateTime(values(1)).ToString("yyyy-MM-dd HH:mm:ss:fff")
            values(8) = Convert.ToDateTime(values(8)).ToString("yyyy-MM-dd HH:mm:ss:fff")
            values(13) = values(13).ToString.Replace(",", " ")
            values(13) = values(13).ToString.Replace(vbLf, " ")

            If first Then
                values.CopyTo(temp, 0)
                SQLReader.Read()
                SQLReader.GetValues(values)
                If values(12) IsNot DBNull.Value Then
                    values(12) = Convert.ToDateTime(values(12)).ToString("yyyy-MM-dd HH:mm:ss:fff")
                    values(15) = Convert.ToDateTime(values(15)).ToString("yyyy-MM-dd HH:mm:ss:fff")
                End If
                values(1) = Convert.ToDateTime(values(1)).ToString("yyyy-MM-dd HH:mm:ss:fff")
                values(8) = Convert.ToDateTime(values(8)).ToString("yyyy-MM-dd HH:mm:ss:fff")
                values(13) = values(13).ToString.Replace(",", " ")
                values(13) = values(13).ToString.Replace(vbLf, " ")
                first = False
            End If

            If values(14) Is DBNull.Value Then
                values(14) = 1
            End If

            If CInt(values(14)) > 1 Then
                temp(13) = temp(13).ToString() & values(13).ToString
            Else

                sw.WriteLine(String.Join(",", temp))
                values.CopyTo(temp, 0)
                Repaircounter += 1
            End If
        End While

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题