Вопрос
Делаю что-то вроде этого:
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 Сообщество Чайников
Контактная информация