Запрос к базе данных PostgreSQL на C#

481
06 января 2017, 08:30

Здравствуйте. Пишу такой код:

NpgsqlConnection DBconnection = _dbconnection;
NpgsqlCommand DBcommand_1 = DBconnection.CreateCommand();
NpgsqlCommand DBcommand_2 = DBconnection.CreateCommand();
NpgsqlDataReader DataReader_1, DataReader_2;
DBcommand_1.CommandText = "SELECT Что-то там FROM Откуда-то";
DataReader_1 = DBcommand_1.ExecuteReader();
int fields = DataReader_1.FieldCount;
string[] product;
string code;
while (DataReader_1.Read())
{                   
    product = new string[fields + 3];
    product[0] = DataReader_1.GetInt32(0).ToString();
    code = DataReader_1.GetInt32(1).ToString();
    DBcommand_2.CommandText = "SELECT Что-то там FROM Откуда-то WHERE Код = " + code;
    DataReader_2 = DBcommand_2.ExecuteReader();
...
...
...
}

Во время выполнения второго запроса выдается ошибка: "There is already an open DataReader associated with this Command which must be closed first." Почему так, разве DBcommand_1 и DBcommand_2 как-то связаны? Если вместо Npgsql использовать OleDb, такой ошибки не возникает.

Answer 1

Попробуй в строчку подключения прописать MultipleActiveResultSets=true

Если верить вот этому ответу, то это связано с тем, что ты в рамках одного соединения выполняешь итерацию DataReader'ом и еще один какой-то запрос.

Если то, что выше не поможет, то запуск запроса в отдельном соединении точно должен помочь.

READ ALSO
RichTextBox как DataTemplate в ListView

RichTextBox как DataTemplate в ListView

Доброго времени суток! У меня в качестве ListViewItemTemplate является RichTextBox с забинденным Document'ом

374
Не правильная дозапись в бинарный файл C#

Не правильная дозапись в бинарный файл C#

Всем доброго времени сутокПомогите разобраться, написал приложение которое производит дозапись бинарного файла, но дозапись только в 101 значение,...

385
Делегаты C#. Invoke

Делегаты C#. Invoke

В качестве примера возьмем следующий код и опустим все подробности

430
FarseerPhysics MonoGame

FarseerPhysics MonoGame

Всем приветНачал писать игру и пришел момент когда надо перемещаться персонажем

360