Tag: connection pooling

连接池与Access数据库

我有一个应用程序经常从Access数据库中读取数据,有没有办法使用连接池? 我的Open Databse方法: – private bool OpenDatabaseConnection(string databaseName) { try { string connectionString = “Provider = Microsoft.Jet.OLEDB.4.0; ” + “Data Source = ” + databaseName + “;”; settingsDbConn = new OleDbConnection(connectionString); settingsDbConn.Open(); } catch (Exception) { return false; } return true; }

重用SqlConnection的最佳实践

我来自Java经验,我试图从C#开始。 我已经阅读了SqlConnection SqlCommand SqlDataReader IDisposable ,我可以理解连接到数据库的最佳做法是在自己的using块中包装SqlConnection , SqlCommand和SqlDataReader 。 但在Java中,我们使用将连接封装到工厂方法中,仅创建一次,并将其重用于所有查询,甚至是multithreading查询。 仅为每个查询创建语句和结果集,并尽快关闭。 是不是为每个查询创建一个新的SqlConnection有点矫枉过正? 不能重复使用吗?

ODP.NET连接池:如何判断是否已使用连接

我正在修改Winforms应用程序以使用连接池,因此可以在后台线程中进行数据访问。 业务逻辑在PL / SQL中实现,并且为了利用业务逻辑,必须调用几个与安全相关的存储过程。 我需要的是一种方法来判断连接是否在没有往返数据库的情况下使用。 我不认为我可以在HashSet跟踪它们,因为我怀疑Equals甚至可以依赖ReferenceEquals 。 有任何想法吗? 编辑: 为了清楚起见,我计划使用ODP.NET的内置连接池机制。 如果我滚动自己的连接池,跟踪哪些连接是新的与使用的将是非常微不足道的。

关闭SQLDataReaders – 如何判断它们是否已关闭?

我发现我有一些网站连接池问题,我正在跟踪它们。 我知道有一件事要确保任何SQLDataReaders都关闭,我已经走了,并确保它们是。 我脑子里浮现的一个问题是关于返回SQLDataReaders的方法以及它们如何关闭(或不关闭)。 所以这里有我设置的东西和一些示例方法: public static SqlDataReader ExecuteReader(SqlCommand cmd) { SqlConnection c = new SqlConnection(Properties.Settings.Default.DatabaseConn); cmd.Connection = c; c.Open(); return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); } 然后我有一个使用’ExecuteReader()’的方法 public static SqlDataReader GetData() { SqlCommand Query = new SqlCommand(“select * from SomeTable”); return ExecuteReader(Query); } 现在说我有另一个调用’GetData’的方法。 我显然简化了一些事情 public static SqlDataReader GetMoreData() { return GetData; } 所以我的问题是,当我像这样调用’GetMoreData’时 SqlDataReader dr = GetMoreData(); //do […]

ODP.NET连接池参数

我正在尝试使用ODP.NET版本2.111.6.20为我的.NET应用程序配置连接池。 该数据库是Oracle 11.1。 我在我的.NET 2.0应用程序中使用以下连接字符串: Data Source=prod; User Id=FAKE_USER; Password=FAKE_PASS; Pooling=true; Min Pool Size=2; Max Pool Size=5; Connection Timeout=30;” 根据文档,连接池应初始化为2个连接,并根据需要增加最多5个连接。 它永远不会超过5个连接。 我所看到的是,连接每次增长2个,并且增长到10个连接。 我通过查询v $ session表来监视Oracle数据库中的连接,因此我知道连接来自源自我的应用程序的特定应用程序。 如果有人可以帮我确定在这个应用程序内的连接池中可能发生的事情,可能允许超过最大连接数,我会很感激。 样本C#代码 以下是调用数据库的代码示例: const string connectionString = “Data Source=prod; User Id=FAKE_USER; Password=FAKE_PASS; Pooling=true; Min Pool Size=5; Max Pool Size=5; Connection Timeout=30;”; using (OracleConnection connection = new OracleConnection(connectionString)) { connection.Open(); using […]