我目前有一个小应用程序向服务器发送许多不同的 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());
}
}
像魅力一样工作......但是,正如您在上面看到的,连接永远不会关闭。当我在 .ExecuteReader() 后面添加 conn.Close() 时,阅读器是空的,返回后的所有内容当然都是无用的。
也许这是一个愚蠢的问题,但我对 C# 相当陌生,所以请大方,任何提示都表示赞赏。
干杯,
Primus