准备好的报表和汇集的连接



我编写了一个程序,该程序使用一个带有准备好的语句的单一连接。到目前为止,这是可行的,但我正在转向使用池连接。

我假设准备好的语句与连接池一起使用,但我无法理解它在实践中是如何使用的。

我假设我没有存储连接对象,而是为我运行的每个查询创建一个新的连接对象(将被池化)。

在我使用类似的东西之前:

//Single connection at startup
var conn = NpgsqlCommand(...);
...
//Prepare all commands once at start-up
var cmd = new NpgsqlCommand("INSERT...", conn);
cmd.Parameters.Add("id", NpgsqlDbType.Integer);
cmd.Prepare();
...
//Using the command multiple times later on
cmd.Parameters["id"].Value = 4312;
cmd.ExecuteNonQuery();

现在使用池连接,如何准备这些命令
我想每个连接都需要一个准备好的命令,但我也需要一些方法来获得一个可以是池中任何人的连接。

我假设池也可以创建新的连接,那么我需要为每个调用准备一组新的命令,还是创建一个新的NpgsqlCommand,准备并执行它?

一些背景:
我当前的设置是对单个用户的测试,其中只有几个调用,所有调用都是按顺序进行的。稍后,这将是一个具有并行执行的多用户/多线程服务

我可以看到我如何创建自己的连接池并编写自己的代码来为新线程准备命令,但我认为我不必编写这些,但我可能错了。

我使用的是Npgsql(PostgreSQL),但如果可能的话,我们将提供一个通用的解决方案。

根据这个问题,答案是不能使用连接池。

最新更新