我是一名 C++ 程序员,我不熟悉 .NET 数据库模型。我通常使用IDataReader
( OdbcDataReader
,OledbDataReader
或SqlDataReader
) 从数据库中读取数据。有时当我需要使用大量数据时DataAdapter
,我应该怎么做才能实现 ODBC 等本机库中存在的可滚动游标的功能?
谢谢大家的回答,但是我处于无法接受的情况,当然这是我的错,没有完全解释我的问题。我将其解释为现在已删除的答案之一中的评论。
我必须编写一个程序来充当客户端程序和 MSSQL 之间的代理,对于这个库,我有以下要求:
- 我的程序应该兼容MSSQL2000
- 我不知道用户将发送的所有表和查询,我应该简单地向其中添加一些信息,制作日志,......然后针对 MSSQL 执行它,因此很难使用基于查询的有序字段或表的主键(我所有的作品都在一个数据库中,但该数据库很大,可能会随着时间而改变)。
- 客户端只需要一部分数据,大部分DBMS都支持
LIMIT OFFSET
,可惜MSSQL
不支持,而且ROW_NUMBER
不存在,MSSQL2000
如果支持,那我又需要了解程序逻辑,需要解析SQL命令(其实我编写了一个解析库,boost::spirit
但那是本机代码,除此之外,我还不能 100% 确定它的功能)。 - 我可能有多个客户端,但他们发送的大多数查询是少数预定义查询之一(当然用户仍然发送自定义查询,但它约占所有查询的 30%),所以我想我可以打开一些可滚动的游标和使用该游标和自定义缓存响应客户端。
- 服务器机器及其
MSSQL
将专用于我的程序,所以我真的想利用服务器和 DBMS 的所有功能来实现我的功能。
所以现在:
- 使用可滚动游标有什么问题,为什么我应该避免它们?
- 如何在 .NET 中使用可滚动游标?