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

问题描述 投票:1回答:1

我想在不更改代码的情况下消除PGSQL上的服务器端预准备语句。使用某些参数在JDBC上是否有可能?

明确地说,我想使用客户端准备语句,这意味着我的代码不会更改,并且我将享受准备语句的安全优势,但不能在服务器上进行编译。

java sql postgresql jdbc prepared-statement
1个回答
3
投票

The documentation说:

[在某些情况下,您可能希望禁用服务器准备的语句。例如,如果您通过与服务器准备的语句不兼容的平衡器路由连接,则别无选择。

您可以通过设置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);

如果您在unwrap中将org.postgresql.PGConnection设置为java.sql.Connection,也可以为该连接上所有准备好的语句在连接级别上设置阈值。

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

© www.soinside.com 2019 - 2024. All rights reserved.