СообЧа > База Знаний > Программирование > .NET

Вопрос

Делаю что-то вроде этого:

Dim cmd As New OdbcCommand()
Dim cmdUpd As New OdbcCommand()
Dim con As New OdbcConnection()
Dim dr As OdbcDataReader
MakeCon(con)
cmd.Connection = con
cmdUpd.Connection = con
cmd.CommandText="…"
dr = cmd.ExecuteReader
while dr.Read
cmdUpd.Cancel()
cmdUpd.CommandText = sqlUpd
cmdUpd.ExecuteNonQuery() — вот на этой строке возникает ошибка: There is already an open DataReader associated with this Connection which must be closed first
end while

Вопрос: зачем мне закрывать DataReader, который использует Connection, если я еще не закончил с ним работу, для того что бы выполнить cmdUpd.ExecuteNonQuery()?

Ответ

DataReader слишком низкоуровневая штука.
Он позволяет читать данные в одном напрвлении(зато очень быстро) и монопольно использует Connection. Тут надо либо 2 объекта Connection либо считать данные в DataSet и использовать их локальную копию.



Copyright © 2000-2004 Сообщество Чайников
Контактная информация