Здравствуйте. Пишу такой код:
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, такой ошибки не возникает.
Попробуй в строчку подключения прописать MultipleActiveResultSets=true
Если верить вот этому ответу, то это связано с тем, что ты в рамках одного соединения выполняешь итерацию DataReader'ом и еще один какой-то запрос.
Если то, что выше не поможет, то запуск запроса в отдельном соединении точно должен помочь.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости