2

コードの一部を検討してください:

    static string GetUser(int id)
    {
        Console.WriteLine("Start get -> {0}", id);

        var connb = new DB2ConnectionStringBuilder(ConfigurationManager.ConnectionStrings["DB2_USER"].ConnectionString);
        connb.Pooling = true;
        connb.MinPoolSize = 10;
        connb.MaxPoolSize = 100;

        var conn = new DB2Connection(connb.ConnectionString);

        var cmd = new DB2Command("SELECT name FROM USR.USERS WHERE id = @id");
        cmd.Parameters.Add("@id", id);
        cmd.Connection = conn;

        conn.Open();

        // conn.IsConnectionFromPool <-- false

        var reader = cmd.ExecuteReader();
        var result = string.Empty;
        while(reader.Read())
            result = reader.GetString(0);

        conn.Close();
        conn.Dispose();

        Console.WriteLine("End get <- {0} {1}", id, result);

        return result;
    }

このサンプルでは、​​IBM .NET Database ドライバーが使用されています。

接続文字列は接続プールの設定を明示的に定義しますが、IsConnectionFromPool プロパティが true になることはありません。

これは、データベース ドライバーが私の場合のプールを保持していないということですか? この場合、何らかの方法で .NET ドライバーの設定を調整する必要がありますか?

4

1 に答える 1

2
    connb.Pooling = true;
    connb.MinPoolSize = 10;
    connb.MaxPoolSize = 100;

MinPoolSize同時接続数を超えるとプーリングが有効になります。

于 2013-10-17T15:55:53.030 に答える