2

これは本当に簡単です。私がやろうとしているのは、データテーブルを埋めることだけです。すべてを using() で囲み、接続を破棄/閉じません。助けてください

DataTable loginTbl = MySQLProcessing.MySQLProcessor.StoreProcedureDTTable("Login", ParamArgs, "Login");


 public static DataTable StoreProcedureDTTable(string mysqlQuery, List<string> CommandArgs, string queryName)
    {

        DataTable DTTableTable = new DataTable();
        using (MySqlCommand MySQLCommandFunc = new MySqlCommand(mysqlQuery))
        {
            MySQLCommandFunc.CommandType = CommandType.StoredProcedure;
            foreach (string args in CommandArgs)
            {
                string[] splitArgs = args.Split('|');
                MySQLCommandFunc.Parameters.AddWithValue(splitArgs[0], splitArgs[1]);
            }
            using (MySqlDataAdapter DataDTTables = new MySqlDataAdapter(MySQLCommandFunc))
            {
                DataDTTables.SelectCommand.CommandTimeout = 240000;
                lock (_object)
                {
                    using (MySqlConnection con = new MySqlConnection(ConfigurationManager.ConnectionStrings["mysqlCon"].ConnectionString))
                    {
                        MySQLCommandFunc.Connection = con;
                        DataDTTables.Fill(DTTableTable);
                    }

                }
            }
        }
        DataTable catchConnectionTable = DTTableTable;
        DTTableTable.Dispose();
        return catchConnectionTable;
    }
4

3 に答える 3

3

接続文字列に Pooling=False を追加します

于 2012-07-13T15:15:58.320 に答える
1

やってみました:

      using (MySqlConnection con = new MySqlConnection(ConfigurationManager.ConnectionStrings["mysqlCon"].ConnectionString))
      {
           con.open();
           MySqlDataAdapter DataDTTables = new MySqlDataAdapter(MySQLCommandFunc)
           DataDTTables.SelectCommand.CommandTimeout = 240000;
           MySQLCommandFunc.Connection = con;
           DataDTTables.Fill(DTTableTable);
           con.close();
     }

?

于 2012-07-13T14:51:29.657 に答える