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

本文关键字:获取 超时 经过 时间 过期 连接 | 更新日期: 2023-09-27 18:25:58

我更频繁地遇到这个超时问题。我一直在使用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}