我正在使用OPD.NET dll访问oracle数据库的项目。用户可以在文本框中输入任何SQL语句,然后执行该查询。我一直试图使用OracleDataAdapter将结果集填充到数据表中,但是我想能够分阶段返回结果集(对于大型选择查询)。
我的问题示例是...
如果一个选择查询返回了13行数据,下面的代码片段将执行4次oda.Fill(开始行是15,不存在),我认为这是因为它调用了已关闭或类似的读取器。
然后它将抛出System.InvalidOperationException异常,其中包含消息-由于对象的当前状态,操作无效。
如何找出命令最终会包含多少行(以便避免异常)?
注意:为了简洁起见,我省略了连接和Oracle命令对象。
编辑1: 我刚想到可以将用户输入的SQL语句包装在另一个查询中并执行它... SELECT COUNT(*) FROM (...这里是初始查询...) 但这不是一个很干净的解决方案,肯定有我没看到的方法吧?
提前感谢。
我的问题示例是...
如果一个选择查询返回了13行数据,下面的代码片段将执行4次oda.Fill(开始行是15,不存在),我认为这是因为它调用了已关闭或类似的读取器。
然后它将抛出System.InvalidOperationException异常,其中包含消息-由于对象的当前状态,操作无效。
如何找出命令最终会包含多少行(以便避免异常)?
OracleDataAdapter oda = new OracleDataAdapter(oracleCommand);
oda.Requery = false;
var dts = new DataTable[] { dt };
DataTable dt = new DataTable();
oda.Fill(0, 5, dts);
var a = dts[0].Rows.Count;
oda.Fill(a, 5, dts);
var b = dts[0].Rows.Count;
oda.Fill(b, 5, dts);
var c = dts[0].Rows.Count;
oda.Fill(c, 5, dts);
var d = dts[0].Rows.Count;
注意:为了简洁起见,我省略了连接和Oracle命令对象。
编辑1: 我刚想到可以将用户输入的SQL语句包装在另一个查询中并执行它... SELECT COUNT(*) FROM (...这里是初始查询...) 但这不是一个很干净的解决方案,肯定有我没看到的方法吧?
提前感谢。