У меня в настоящее время небольшое приложение отправляет на сервер множество разных запросов MySQL. Моя идея заключалась в том, чтобы связать соединение, запрос и чтение с функцией только с фактическим запросом в качестве параметра.Закройте соединение MySQL вне функции
Вот что я получил:
public static MySqlDataReader mySqlRead(string cmdText)
{
string connString = "server=" + ORVars.sqlServerAddr + ";port=" + ORVars.sqlServerPort + ";uid=" + ORVars.sqlServerUID + ";pwd=" + ORVars.sqlServerPass + ";database=" + ORVars.sqlServerDB + ";";
MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand command = conn.CreateCommand();
command.CommandText = cmdText;
try
{
conn.Open();
MySqlDataReader reader = command.ExecuteReader();
return reader;
}
catch (MySqlException)
{
throw;
}
}
подключить и отправить запрос здесь:
private void btnLogin_Click(object sender, EventArgs e)
{
string username = txtLogin.Text;
string password = ORFunc.GetMD5Hash(txtPassword.Text);
MySqlDataReader orRead = ORFunc.mySqlRead("SELECT * FROM orUsers WHERE username = '" + username + "' AND pass = '" + password + "'");
while (orRead.Read())
{
MessageBox.Show(orRead["id"].ToString());
}
}
Работает как шарм ... НО, как вы можете видеть выше, соединение никогда не закрывался. Когда я добавляю conn.Close() за .ExecuteReader(), читатель пуст, и все после возвращения конечно бесполезно.
Возможно, это глупый вопрос, но я довольно новичок в C#, поэтому, пожалуйста, будьте щедрыми, любой намек оценивается.
веселит,
Primus
отличный, понятный и используемый ... Также благодаря Расселу !!! – PrimuS