繁体   English   中英

查找SQL OleDbDataReader的长度

[英]Find the length of an SQL OleDbDataReader

我有一个SQL OleDbDataReader,将访问时的数据带入我的视觉基本前端。 是否可以找到读者持有的记录数? 正如我想使用此值来结束循环。

下面是我的代码。 它的这一部分用于查找数据以运行计算并将该值重新插入到访问中。 我当前正在使用批处理方法,因为我遇到了超时错误,指出立即计算所有数据点以进行计算时,代码花费的时间太长。 下面的代码适用于第一个批处理,但是在第二个批处理中失败,因为它无法查看阅读器中的下一部分数据。 将来,数据在阅读器中的顺序可能不正确,因此一次查看所有阅读器是最好的解决方案。 要解决此问题,我需要Do Until SearchCounter = the length of the reader 我尝试将阅读器的内容放入数组中以找到其长度,但是这非常耗时。 任何其他建议将非常欢迎。

For CalcParameterCounter = 0 To CalcParams.GetLength(0) - 1

                ParamQuery = "ID_PAR = " & Format(CalcParams(CalcParameterCounter), "0")
                conditions = ParamQuery ' & UploadQuery

                DatabaseConnection("SELECT " & FieldNames & " FROM " & tablename & " WHERE " & conditions, "Read Recordset"

                CalcDataRecordPointer = 0
                Do Until rdrOLEDB.Read = False
                    SearchCounter = 0
                    Do Until SearchCounter = CalcData.GetLength(1)
                        CalcDataRecordPointer = CalcDataRecordPointer + 1
                        If CalcDataRecordPointer = CalcData.GetLength(1) Then CalcDataRecordPointer = 0
                        Value = rdrOLEDB.Item(1)
                        If CDate(rdrOLEDB.Item(0).ToString()) = CDate(CalcData(0, CalcDataRecordPointer)) Then
                            match = True
                            CalcData(CalcParameterCounter + 1, CalcDataRecordPointer) = rdrOLEDB.Item(1).ToString()
                            Exit Do
                        Else
                            match = False
                        End If
                        SearchCounter = SearchCounter + 1
                    Loop
                Loop
                'Close:
                rdrOLEDB.Close()
                cnnOLEDB.Close()
            Next

使用reader.Read()是已记录的用于遍历记录集的方法。 我已经在VBA和ADO中进行了一些编程,其中通过不同的游标类型可以为您提供遍历它们之前的记录总数。 这确实造成了性能上的损失,这是因为我使用的是Excel,并且命令对象必须在读取器启动之前首先将记录集放入内存中。

尽管OleDb是完全可以接受的数据库,但是也许请看ADO执行相同的工作,该工作与SQL 2000-> 2008 R2兼容(从MDAC2.8开始)。 解决此问题的另一种方法是查看是否可以在SQL存储过程中进行处理,然后将其输出到代码中。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM