public void ExecuteAction(MySqlCommand query, Action<MySqlDataReader> action)
{
_connection.Open();
query.Connection = _connection;
using(var reader = query.ExecuteReader())
{
while (reader.Read())
{
action(reader);
}
reader.Close();
}
_connection.Close();
}
Можно ли сделать что-то подобное? Я получаю всегда ошибку «Неверная попытка чтения, когда читатель закрыт».Неверная попытка прочитать - возможно ли действие?
Это кусок кода, который я использую:
private void UpdateRecords()
{
var query = String.Format("SELECT * FROM {0}", _table);
var cmd = new MySqlCommand(query);
_db.ExecuteAction(cmd, reader =>
{
var rows = new List<object>();
for (var i = 0; i < reader.FieldCount; i++)
{
if (reader.IsDBNull(i)) continue;
var name = reader.GetName(i);
if (!_fields.Contains(name)) _fields.Add(name);
rows.Add(reader.GetValue(i));
}
_records.Add(new Record(_fields, rows));
});
}
Я пытаюсь хранить все записи таблиц баз данных по в динамические классы внутри программы. Когда я пытаюсь добавить динамические данные mysql в эти классы, я получаю эту ошибку.
Другой вопрос, который связан: есть ли библиотека, которая может сделать это для меня? Это много кода, который мне не нужно было бы записывать, но это мой первый подход к MySQL и C#, поэтому у меня нет каких-либо знаний. Спасибо за помощь.
UPDATE: теперь я получаю ошибку, что соединение уже открыт, MySQL делает меня проклятье (я привык к MongoDB ...)
Вместо того, чтобы положить «раскрываемость» сообщение в верхней части вашего вопроса, пожалуйста, добавьте свое решение в качестве ответа, который может быть принят и ставится на голосование. –