【发布时间】:2017-09-19 08:27:30
【问题描述】:
我不知道为什么我的连接一直关闭而没有任何东西可以关闭连接。我曾尝试将它们封闭在using 块中,但无济于事。有没有更好的方法将单个选择查询传递给string?
private void button2_Click(object sender, EventArgs e)
{
string username = txtUsername.Text;
string password = txtPassword.Text;
string query = "SELECT isActive FROM tblUser WHERE username = ?username AND password = ?password";
MySqlCommand cmd = new MySqlCommand(query, con.connection);
cmd.Parameters.AddWithValue("?username", username);
cmd.Parameters.AddWithValue("?password", password);
con.connection.Open();
MySqlDataReader mdr = cmd.ExecuteReader();
string isActive="";
string updatequery = "UPDATE tbluser SET DateLastLogin= '" + DateTime.Today.ToString("dd-mm-yy") + "',TimeLastLogin = '" + DateTime.Now.TimeOfDay + "', IsActive = 1 WHERE username = ?username";
if (mdr.HasRows)
{
if(con.connection.State == ConnectionState.Closed)con.connection.Open();
while (mdr.Read())
{
isActive = mdr[0].ToString();
if (isActive.Equals("1"))
{
MessageBox.Show("This user is already logged in!");
}
else
{
MySqlCommand updatecmd = new MySqlCommand(updatequery, con.connection);
con.OpenConnection();
updatecmd.Parameters.AddWithValue("?username", username);
updatecmd.ExecuteNonQuery();
pnlLogin.Hide();
pnlMenu.Show();
MessageBox.Show("Welcome " + username);
}
}
}
else
{
MessageBox.Show("Invalid user credentials.");
}
}
【问题讨论】:
-
我不知道
MySqlConnection,但肯定有SqlConnection,当DataReader处于打开状态时,您不能将连接用于其他用途。您是否尝试过使用第二个Connection对象进行更新? -
我没有注意到我只为两个命令使用了 1 个连接。感谢您指出了这一点。我现在已经修复了我的代码。