Я переписываю часть старого приложения webforms. Я хочу сделать центральную функцию, которая будет выполнять выбранные запросы. Я буду кормить его SQL-запрос и параметры, и он сделает все остальное.Хранить MySqlDataReader в переменной
До сих пор у меня есть это:
MySqlDataReader DoRead(string query, params MySqlParameter[] pms)
{
MySqlCommand myCommand;
if (!myConnection)
myConnection = new MySqlConnection(sCon);
if (myConnection.State != ConnectionState.Open)
{
myConnection.Close();
myConnection.Open();
}
myCommand = myConnection.CreateCommand();
myCommand.CommandText = query;
foreach (MySqlParameter p in pms)
{
myCommand.Parameters.Add(p);
}
return myReader = myCommand.ExecuteReader();
}
Мой вопрос, могу ли я сохранить результаты myReader
переменной и возвращает эту же переменную вместо myReader
только чтобы я мог закрыть соединение и читателя немедленно в функции вместо этого в коде ?
Да, вы можете это сделать. Вы можете сохранить набор результатов в DataTable и вместо этого вернуть DataTable. Наряду с этим, я вижу несколько логических ошибок в вашем выше опубликованном коде. – Rahul
Короткий ответ: да. Просто прочитайте все данные от читателя до, скажем, 'DataTable' или' List ', закрыть соединение и вернуть этот тип данных или список. Но обратите внимание: вам не следует хранить сам datareader, но читать данные из него и хранить данные. –