Я использую OPD.NET dll в проекте, который обращается к оракулу.
Пользователи могут ввести любой SQL-запрос в текстовое поле, которое затем будет выполнено для БД.Я пытался использовать OracleDataAdapter для заполнения набора данных набором результатов, но я хочу иметь возможность возвращать набор результатов поэтапно (для больших запросов select).
Пример моей проблемы:.
Если запрос на выборку возвращает 13 строк данных, приведенный ниже фрагмент кода будет выполняться без проблем до тех пор, пока не будет вызван 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;
Примечание. Я для краткости опускаю объекты подключения и команды оракула.
РЕДАКТИРОВАТЬ 1:просто подумал, что мог бы просто обернуть введенный пользователем SQL в другой запрос и выполнить его ... ВЫБЕРИТЕ СЧЕТЧИК (*) ОТ (здесь начальный запрос ...), но это не совсем чистое решение, инаверняка есть метод где-то, что я не видел?
Заранее спасибо.