Java PostgresSQL JDBC是否可以强制使用仅客户端准备的语句?

Java PostgresSQL JDBC是否可以强制使用仅客户端准备的语句?,java,sql,postgresql,jdbc,prepared-statement,Java,Sql,Postgresql,Jdbc,Prepared Statement,我希望在不更改代码的情况下消除PGSQL上服务器端准备的语句。这在JDBC上是可能的吗 明确地说,我希望使用客户机准备的语句,这意味着我的代码不会更改,我将享受准备语句的安全好处,但不会在服务器上编译它。说: 在某些情况下,您可能希望禁用服务器准备语句的使用。例如,如果您通过与服务器准备的语句不兼容的平衡器路由连接,那么您几乎没有选择 通过设置prepareThreshold=0,可以禁用服务器端准备语句的使用 代码示例: java.sql.PreparedStatement pstmt = c

我希望在不更改代码的情况下消除PGSQL上服务器端准备的语句。这在JDBC上是可能的吗

明确地说,我希望使用客户机准备的语句,这意味着我的代码不会更改,我将享受准备语句的安全好处,但不会在服务器上编译它。

说:

在某些情况下,您可能希望禁用服务器准备语句的使用。例如,如果您通过与服务器准备的语句不兼容的平衡器路由连接,那么您几乎没有选择

通过设置prepareThreshold=0,可以禁用服务器端准备语句的使用

代码示例:

java.sql.PreparedStatement pstmt = conn.prepareStatement("SELECT ...");
// get the PostgreSQL-specific class
org.postgresql.PGStatement pgstmt = pstmt.unwrap(org.postgresql.PGStatement.class);
// disable server-side prepared statements
pgstmt.setPrepareThreshold(0);
如果在java.sql.Connection中打开org.postgresql.PGConnection,还可以在连接级别上为该连接上所有准备好的语句设置阈值

将其添加到URL的示例:jdbc:postgresql://localhost/test?user=fred&password=secret&ssl=true&prepareThreshold=0说:

在某些情况下,您可能希望禁用服务器准备语句的使用。例如,如果您通过与服务器准备的语句不兼容的平衡器路由连接,那么您几乎没有选择

通过设置prepareThreshold=0,可以禁用服务器端准备语句的使用

代码示例:

java.sql.PreparedStatement pstmt = conn.prepareStatement("SELECT ...");
// get the PostgreSQL-specific class
org.postgresql.PGStatement pgstmt = pstmt.unwrap(org.postgresql.PGStatement.class);
// disable server-side prepared statements
pgstmt.setPrepareThreshold(0);
如果在java.sql.Connection中打开org.postgresql.PGConnection,还可以在连接级别上为该连接上所有准备好的语句设置阈值


将其添加到URL的示例:jdbc:postgresql://localhost/test?user=fred&password=secret&ssl=true&prepareThreshold=0

看起来不错!它对连接字符串有效吗?或者只在PreparedStatement对象上?实际上这不会编译。PreparedStatement对象没有setPrepareThreshold方法:-我修复了遗漏并添加了一些内容以覆盖连接级别上的设置。是的,因为您需要强制转换连接,而不是PreparedStatement,如下所示:org.postgresql.PGConnectionconn.setPrepareThreshold0;在Eclipse中工作没有异议。看起来不错!它对连接字符串有效吗?或者只在PreparedStatement对象上?实际上这不会编译。PreparedStatement对象没有setPrepareThreshold方法:-我修复了遗漏并添加了一些内容以覆盖连接级别上的设置。是的,因为您需要强制转换连接,而不是PreparedStatement,如下所示:org.postgresql.PGConnectionconn.setPrepareThreshold0;在Eclipse中无异议地工作。