powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Непонятки с reader
11 сообщений из 11, страница 1 из 1
Непонятки с reader
    #33513280
Nikolay Gerasimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имею следующий код:
Код: plaintext
1.
2.
3.
4.
5.
            myCommand1.CommandText = "SELECT tShemaR.* FROM tShemaR WHERE (tipAb_ = " & i & ")"
            myCommand1.Connection = myConnect1
            myReader1 = myCommand1.ExecuteReader
            myCommand2.CommandText = "SELECT tShemaP.* FROM tShemaR WHERE (tipAb_ = " & i & ")"
            myCommand2.Connection = myConnect2
            myReader2 = myCommand2.ExecuteReader
На последней строке выскакивает ошибка. Объясните почему?
...
Рейтинг: 0 / 0
Непонятки с reader
    #33513347
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что за ошибка?

Вы точно уверены, что myConnect1!=myConnect2?
...
Рейтинг: 0 / 0
Непонятки с reader
    #33513371
Nikolay Gerasimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Соединение с одним и тем-же сервером
Но если я буду ссылаться на один и тот-же connect, то будет следующая реплика:
Код: plaintext
Additional information: There is already an open DataReader associated with this Connection which must be closed first. 
Поэтому мне пришлось создать дополнительные подключения, но уже под другими именами. Теперь выскакивает это:
Код: plaintext
An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll
...
Рейтинг: 0 / 0
Непонятки с reader
    #33513408
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, дополнительные подключения могут быть идентичны первому, в тч и по креденшелам. Важно только чтоб это было два конекшена а не две ссылки на один.

Во-вторых:
попробуйте отобразить сведения об исключении:

catch(OleDbException exception)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
   for (int i= 0 ; i < exception.Errors.Count; i++)
   {
      MessageBox.Show("Index #" + i + "\n" +
             "Message: " + exception.Errors[i].Message + "\n" +
             "Native: " + exception.Errors[i].NativeError.ToString() + "\n" +
             "Source: " + exception.Errors[i].Source + "\n" +
             "SQL: " + exception.Errors[i].SQLState + "\n");
   }

Кстати, что за источник данных у вас? SQL Server, Access?
...
Рейтинг: 0 / 0
Непонятки с reader
    #33513417
Nikolay Gerasimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
saintВо-первых, дополнительные подключения могут быть идентичны первому, в тч и по креденшелам. Важно только чтоб это было два конекшена а не две ссылки на один.
Ето как? Каким образом это достигается?
saintКстати, что за источник данных у вас? SQL Server, Access?
MSSQL Server
...
Рейтинг: 0 / 0
Непонятки с reader
    #33513443
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nikolay Gerasimov
MSSQL Server
Тогда логичнее использовать SqlClient, а не OleDb


Nikolay Gerasimov
Ето как? Каким образом это достигается?

ну например для sql client:

Код: plaintext
1.
2.
string con_string="строка подключения...";
SqlConnection con1 = new SqlConnection(con_string);
SqlConnection con2 = new SqlConnection(con_string);
Получается два отдельных конекшена, но с одинаковыми параметрами, кстати они будут находится к тому же в одном пуле.

Насчет ошибки - выведите native код как я вам показал.
...
Рейтинг: 0 / 0
Непонятки с reader
    #33513518
Nikolay Gerasimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
saint
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
   for (int i= 0 ; i < exception.Errors.Count; i++)
   {
      MessageBox.Show("Index #" + i + "\n" +
             "Message: " + exception.Errors[i].Message + "\n" +
             "Native: " + exception.Errors[i].NativeError.ToString() + "\n" +
             "Source: " + exception.Errors[i].Source + "\n" +
             "SQL: " + exception.Errors[i].SQLState + "\n");
   }

exception.Errors.Count - выдается ошибка "is not a member of 'System.exception'".
Приложение пишу на vb.net
...
Рейтинг: 0 / 0
Непонятки с reader
    #33513654
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык Exception должен быть нужного класса:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
catch(OleDbException exception)
{
   for (int i= 0 ; i < exception.Errors.Count; i++)
   {
      MessageBox.Show("Index #" + i + "\n" +
             "Message: " + exception.Errors[i].Message + "\n" +
             "Native: " + exception.Errors[i].NativeError.ToString() + "\n" +
             "Source: " + exception.Errors[i].Source + "\n" +
             "SQL: " + exception.Errors[i].SQLState + "\n");
   }
 }

я же написал, просто забыл выделить
...
Рейтинг: 0 / 0
Непонятки с reader
    #33517632
VSH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VSH
Гость
Открытый ридер может быть только один на соединении. Надо закрыть первый ридер, затем открыть второй.

"While the SqlDataReader is in use, the associated SqlConnection is busy serving the SqlDataReader. While in this state, no other operations can be performed on the SqlConnection other than closing it. This is the case until the Close method of the SqlDataReader is called." MSDN
...
Рейтинг: 0 / 0
Непонятки с reader
    #33518023
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSHОткрытый ридер может быть только один на соединении. Надо закрыть первый ридер, затем открыть второй.

"While the SqlDataReader is in use, the associated SqlConnection is busy serving the SqlDataReader. While in this state, no other operations can be performed on the SqlConnection other than closing it. This is the case until the Close method of the SqlDataReader is called." MSDN

именно так
толко у вопошающего 2 (ДВА) коннекшена: myConnect1 и myConnect2
...
Рейтинг: 0 / 0
Непонятки с reader
    #33518027
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в догон
1) действительно, не понятно - почему используете OLEDB для MS SQL Server

2) MS SQL Server 2005 может обслуживать более 1-го ридера на одном соединении

Шайтан
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Непонятки с reader
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]