Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: DataReader Добавлено: 22.09.03 14:54  

Автор вопроса:   Артём Л. | ICQ: 280044491 

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

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() ?

может забыл установить какойнить параметр?

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #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

на другом форуме мне ответили вот так:

"DataReader слишком низкоуровневая штука.

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

Удачи) "

Ответить

Номер ответа: 3
Автор ответа:
 inf



Вопросов: 0
Ответов: 1
 Web-сайт: Dvinfo.narod.ru
 Профиль | | #3
Добавлено: 01.04.04 09:40

Dim con As New OdbcConnection()

Dim dr As OdbcDataReader

после операции

Закрой Connectio и Reader

так:

con.close()

dr.close()

Удачи !

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам