Страница: 1 |
делаю что-то вроде этого: 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 и использовать их локальную копию. Удачи) " Dim con As New OdbcConnection() Dim dr As OdbcDataReader после операции Закрой Connectio и Reader так: con.close() dr.close() Удачи ! Страница: 1 |
Вопрос: DataReader
Добавлено: 22.09.03 14:54
Автор вопроса: Артём Л. | ICQ: 280044491
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 23.09.03 08:08
Сам я с этим не сталкивался. Но возможное объяснение: вдруг ты
обновишь данные в БД, а datareader будет тебе возвращать старые
данные... Это лишь предположение. Лучше почитай MSDN.
Возможное решение проблемы:
1. Создать отдельный connection.
2. Получать данные не через DataReader, а одной пачкой в DataSet через
DataAdapter. Этот вариант мне кажется оптимальным ... хотя я не знаю
твоей задачи...
3. Почитать MSDN ) Это самый умный вариант решения.
Номер ответа: 2
Автор ответа:
Артём Л.
ICQ: 280044491
Вопросов: 43
Ответов: 227
Профиль | | #2
Добавлено: 23.09.03 13:03
Номер ответа: 3
Автор ответа:
inf
Вопросов: 0
Ответов: 1
Web-сайт:
Профиль | | #3
Добавлено: 01.04.04 09:40