从池中获取连接之前经过的超时时间

时间:2019-09-05 14:23:26

标签: c# mysql sql

我的作业代码有问题。我们必须使用更新的用户创建一些数据库,但是这些和程序崩溃使我出错。 这是完整的错误代码,并且有代码。

  

错误:MySql.Data.MySqlClient.MySqlException(0x80004005):错误   连接:超时已过期。逾时时间已过   从池中获取连接。这可能是因为   所有池连接都在使用中,并且已达到最大池大小。

我尝试使用query.CommandTimeout = 60;但我认为它没用,您怎么看?

MySqlConnection connect = new 
     MySqlConnection("Server=localhost;Database=Work;Uid=root;Pwd='1234';");
connect.Open();
MySqlCommand query = new MySqlCommand(@"UPDATE user  
        SET User_Name=@User_Name,User_BankBalance=@User_BankBalance,
        User_Password=@User_Password,LottoTimer=@LottoTimer 
        WHERE User_Name='" + Escape(u.Username) + "'", connect);
using (query)
{
    query.CommandType = System.Data.CommandType.Text;
    query.Parameters.AddWithValue("@User_Name", Escape(u.Username));
    query.Parameters.AddWithValue("@User_BankBalance", u.BankBalance);
    query.Parameters.AddWithValue("@User_Password", u.Password);
    query.Parameters.AddWithValue("@LottoTimer", u.LottoTimer);
    query.Dispose();
    query.Prepare();
    query.ExecuteNonQuery();
}
connect.Close();
return;

1 个答案:

答案 0 :(得分:1)

您的方法应如下所示:

        string query =
            @"UPDATE user SET"
            + " User_Name=@User_Name,"
            + " User_BankBalance=@User_BankBalance,"
            + " User_Password=@User_Password,"
            + " LottoTimer=@LottoTimer"
            + " WHERE User_Name='" + Escape(u.Username) + "'";
        using( var connect = new MySqlConnection("Server=localhost;Database=Work;Uid=root;Pwd='1234';"))
        using( var query = new MySqlCommand(query, connect))
        {
            connect.Open();
            query.CommandType = System.Data.CommandType.Text;
            query.Parameters.AddWithValue("@User_Name", Escape(u.Username));
            query.Parameters.AddWithValue("@User_BankBalance", u.BankBalance);
            query.Parameters.AddWithValue("@User_Password", u.Password);
            query.Parameters.AddWithValue("@LottoTimer", u.LottoTimer);
            query.Prepare();
            query.ExecuteNonQuery();
        }
        return;

设置MySqlConnection很重要,因此它可以再次用于池中。您遇到的问题是池中使用了所有连接,并且它正在等待一个连接-直到超时。