繁体   English   中英

查找SQL OleDbDataReader的长度

Find the length of an SQL OleDbDataReader

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个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
1 个回复

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

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

祝好运。

2 OleDbDataReader与SQL Developer给出的结果不同

在我的oracle数据库上的以下查询给出的结果在SQL Developer中运行时看起来不错。 正确填充了所有行。 当使用OleDbReader.ExecuteReader()在我的程序中运行相同的确切查询时,当某些行不在SQL Developer结果中时,其中某些行将包含特定列的空值 ...

6 C#OleDbDataReader不返回任何记录,但手动sql返回记录

我有以下几点: 如果抓取select语句并通过SQLDeveloper运行它,我将获得记录。 我在其他事情上使用了相同的代码块,并且工作正常,但是这次……由于某种原因,它不返回任何记录。 我已断开与SQLDeveloper的连接,重新连接并确保已提交数据。 我也没有任何 ...

7 正则表达式在SQL中查找列值的长度

我已经创建了一个查询,以使用此查询查找要传递的值是字母数字还是数字: 此代码检查,如果l_columnvalue是数字,如果是则l_col将成为大于0,否则l_columnvalue将被包含在引号" " 。 现在,我要检查columnvalue是否为数字,并且其长度等于7。如果是, ...

8 SQL查询以找到值的长度

我需要一个查询,该查询在FL_SUCC_EXEC列中计算最长的连续连续的后续“ 1” FL_SUCC_EXEC 。 对于表TEST(row_no number, fl_succ_exec number(1))的以下数据,查询结果应为“ 6”。 行由row_no 。 我可以在PL ...

9 如何创建SQL查询以查找时间长度

我试图找出故障多久了。 我有一个名为DateAndTime的DateTime字段。 我想找出从录制到停止的时间长短,所以说它从8:00:00到8:00:12(系列1)然后从12:00:13到12:02:16(系列2)进行录制)等。如何在查询中写出该系列记录的最后一个值与该系列记录的第一个值之 ...

10 OleDbDataReader错误

我正在尝试保存带有已付款人的联系电话的txt文件,但我收到一条错误消息,指出存在错误 “ OleDbDataReader dbReader = cmd.ExecuteReader()” 说“条件表达式中的数据类型不匹配”。 我认为它是导致问题的SELECT语句,在访问[付费] ...

暂无
暂无

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

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