Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取超时已过期。从池中获取连接之前经过的超时时间_C#_Mysql_.net - Fatal编程技术网

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

C# 获取超时已过期。从池中获取连接之前经过的超时时间,c#,mysql,.net,C#,Mysql,.net,我经常遇到这个超时问题。我一直在使用MYSQL数据库和windows应用程序。我甚至尝试过使用having子句,但遇到了同样的情况 public bool VerifyStock(string serialnumber) { con = new MySqlConnection(connstring); string readData = "select * from Fn_Inventory where ModelNumber = '" + ser

我经常遇到这个超时问题。我一直在使用MYSQL数据库和windows应用程序。我甚至尝试过使用having子句,但遇到了同样的情况

   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();
    }

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

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

增加连接池大小和超时将是一个快速解决方案。你可以参考更多信息

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

if (con.State == ConnectionState.Open)
{
     con.Close();
}
你应该经常使用。这种类型的字符串连接对攻击是开放的。和用于处置数据库连接。