Нужно получить несколько таблиц из Mysql БД и записать их в DataSet. Вернее это даже не таблицы а выборки из двух таблиц слитые в таблицу через UNION. В интерфейсе СУБД (WorkBench) запрос отрабатывает корректно поэтому приведу только код клиента :
DataSet dataset = new DataSet("Name");
//
internal static void GetInvestment(string order, string SType)
{
using (MySqlConnection conn = new
MySqlConnection(ConnectionString))
{
string query = @"SELECT ... FROM (...UNION ALL...) X
GROUP BY `Title` ";
MySqlCommand comm = new MySqlCommand(query, conn);
comm.Parameters.AddWithValue("@ID", order);
comm.Parameters.AddWithValue("@Type", SType);
try
{
conn.Open();
MySqlDataReader reader = comm.ExecuteReader();
while (reader.Read())
{
if (reader.HasRows)
{
if (reader.GetDecimal(3) > 0)
{
DataTable table = dataset.Tables.Add(SType);
table.Load(reader);
}
}
}
}
catch (Exception ex)
{
BOX.ShowError(ex.Message, ex.Source);
}
}
}
Должно получится несколько выборок, по одной согласно каждой SType, т.е. метод GetInvestment вызывается в цикле, каждый раз с новым SType однако сразу ловит исключение :
Invalid attempt to call Read when reader is closed
По смыслу понятно что reader оказался закрытым после 1же таблицы но почему и как его держать открытым?
Замените:
using (MySqlDataReader reader = comm.ExecuteReader())
{
if (reader.Read() && reader.GetDecimal(3) > 0)
{
DataTable table = dataset.Tables.Add(SType);
table.Load(reader);
}
}
Сколько таблиц должно создаться в результате одного вызова метода GetInvestment?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости