我不知道为什么我的连接一直关闭,而没有任何东西关闭连接。我试过把它们附在using块里,但没有用。是否有更好的方法将单个select查询传递到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.");
}
}发布于 2017-09-19 13:02:36
我为Update查询创建了第二个连接语句,并删除了打开连接的其他语句。
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)
{
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.connection2);
con.connection2.Open();
updatecmd.Parameters.AddWithValue("?username", username);
updatecmd.ExecuteNonQuery();
pnlLogin.Hide();
pnlMenu.Show();
MessageBox.Show("Welcome " + username);
}
}
}
else
{
MessageBox.Show("Invalid user credentials.");
}
con.CloseConnection();
}发布于 2017-09-19 09:05:49
由于您没有关闭连接(这是错误的),您不需要验证您的骗局是否已关闭才能打开它,因此您需要删除以下内容:
if(con.connection.State == ConnectionState.Closed)con.connection.Open();`此外,您不需要再次打开连接,我认为是因为当您的con.OpenConnection();重新打开连接时,!isActive.Equals("0")会关闭连接。尝试删除con.OpenConnection();并检查它。
如果在您提供的代码后面的行中没有任何新的查询,则最好使用.Close()连接。
https://stackoverflow.com/questions/46295508
复制相似问题