繁体   English   中英

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

[英]Getting Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool

我更经常遇到这个超时问题。 我一直在使用MYSQL数据库并在Windows应用程序上工作。 我什至尝试过使用Have子句,但面临相同的情况

   public bool VerifyStock(string serialnumber)
    {
        con = new MySqlConnection(connstring);

        string readData = "select * from Fn_Inventory where ModelNumber = '" + serialnumber + "'";

        cmd = new MySqlCommand(readData, con);
        cmd.Parameters.AddWithValue("@ModelNumber", serialnumber);


        con.Open();

        dr = cmd.ExecuteReader();

        if (dr.HasRows)
        {
            //while (dr.Read())
            if (dr.Read())
            {

                decimal invquntity = Convert.ToDecimal(dr["AvailableQuantity"].ToString());

                decimal quantity = Convert.ToDecimal(txtQuantity.Text);

                decimal sinvquntity = invquntity - quantity;
                if (sinvquntity >= 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }

            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
        con.Close();
    }

快速增加连接池的大小和超时。 您可以在这里参考以获取更多信息

并正确关闭打开的连接和末端外部条件。 使用try catch finally块并将此代码添加到finally块中,以便始终执行该代码。

if (con.State == ConnectionState.Open)
{
     con.Close();
}

您正在打开连接但不根据条件关闭连接,而是使用return语句从代码返回,或者在您使用return语句的地方关闭连接,或者使用using()子句。当连接保持打开状态时,将没有可用的连接,因此池会满的。 从数据读取器读取值后,请始终关闭连接。

using (SqlConnection con = new SqlConnection()) { //your code here}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM