首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接是关闭的mysqldatareader

连接是关闭的mysqldatareader
EN

Stack Overflow用户
提问于 2017-09-19 08:27:30
回答 2查看 50关注 0票数 0

我不知道为什么我的连接一直关闭,而没有任何东西关闭连接。我试过把它们附在using块里,但没有用。是否有更好的方法将单个select查询传递到string

代码语言:javascript
复制
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.");
    }



}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-19 13:02:36

我为Update查询创建了第二个连接语句,并删除了打开连接的其他语句。

代码语言:javascript
复制
 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();

    }
票数 0
EN

Stack Overflow用户

发布于 2017-09-19 09:05:49

由于您没有关闭连接(这是错误的),您不需要验证您的骗局是否已关闭才能打开它,因此您需要删除以下内容:

代码语言:javascript
复制
if(con.connection.State == ConnectionState.Closed)con.connection.Open();`

此外,您不需要再次打开连接,我认为是因为当您的con.OpenConnection();重新打开连接时,!isActive.Equals("0")会关闭连接。尝试删除con.OpenConnection();并检查它。

如果在您提供的代码后面的行中没有任何新的查询,则最好使用.Close()连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46295508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档