Я пытаюсь прочитать базу данных MySQL из моего проекта C# с использованием драйверов MySQL для .net с сайта MySQL.Получение исключения: Неверная попытка прочитать, когда читатель закрыт
Хотя я немного поработал над этим (включая this), я все еще смущен, почему это происходит. Позже я получил всплеск, и я все равно получаю ту же ошибку. (До запуска этого я заполнил базу данных с некоторыми значениями по умолчанию.) Вот код всплеска в toto.
class Program {
static void Main (string[] args) {
Console.WriteLine (GetUserAge ("john")); // o/p's -1
}
static int GetUserAge (string username) {
string sql = "select age from users where [email protected]";
int val = -1;
try {
using (MySqlConnection cnn = GetConnectionForReading()) {
cnn.Open();
MySqlCommand myCommand = new MySqlCommand (sql, cnn);
myCommand.Parameters.AddWithValue ("@username", username);
using (MySqlDataReader reader = myCommand.ExecuteReader()) {
DataTable dt = new DataTable();
dt.Load (reader);
if (reader.Read()) {
val = reader.GetInt32 (0);
}
}
}
} catch (Exception ex) {
Console.WriteLine (ex.Message);
} finally {
}
return val;
}
private static MySqlConnection GetConnectionForReading() {
string conStr = "Data Source=localhost;Database=MyTestDB;User ID=testuser;Password=password";
return new MySqlConnection (conStr);
}
}
Приведенный выше код дает мне исключение: «Неверная попытка чтения, когда читатель закрыт».
Позже я изменил, если-условие так:
if (reader.HasRows && reader.Read()) {
val = reader.GetInt32 (0);
}
А теперь о/р -1. (Данные находятся там в таблице.) Если по какой-то причине результирующий набор имел нулевые строки, читатель не должен был попадать в if-блок в первую очередь. Я имею в виду, что цель метода Read() - проверить, есть ли в результирующем наборе какие-либо строки.
В конце моего ума здесь ... просто не могу понять, куда я иду.
Благодарим за помощь! :)
@harpo: вы должны сделать этот комментарий ответом – BrokenGlass
@BrokenGlass, ладно, просто использовал этикет для не-top-of-my-head :) – harpo
Такая же ошибка в другом сценарии http: // stackoverflow. com/questions/6775136/invalid-try-to-call-read-when-reader-is-closed-error-for-lengthy-operatio – Lijo