java - PostgresSQL JDBC 是否可以强制使用仅客户端准备好的语句?
问题描述
我想在不更改代码的情况下消除 PGSQL 上的服务器端准备语句。这在带有一些参数的 JDBC 上是可能的吗?
明确地说,我想使用 Client Prepared Statements,这意味着我的代码不会改变,我将享受 Prepared Statements 的安全优势,但不会在服务器上编译它。
解决方案
文档说:
在某些情况下,您可能希望禁用服务器准备的语句。例如,如果您通过与服务器准备的语句不兼容的平衡器路由连接,则您别无选择。
您可以通过设置禁用服务器端准备好的语句
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
推荐阅读
- google-data-studio - 如何在谷歌数据工作室中显示上一年指标的值
- kotlin - 将逗号分隔的数组表示形式转换为元素列表
- python - 为未知长度的输出数组定义一个 numpy 签名(用于 numba.guvectorize)
- celery - 将 celery 作为守护进程运行不会创建 PID 文件(无权限问题)
- http - 如何使用 Lua 通过 multipart/form-data 发送文件?
- r - R:什么是“Dlist”类的对象?
- json - 无法使用 Invoke-WebRequest 发布嵌套 JSON
- javascript - 无法使用 react-native-voice 包
- visual-studio-code - vscode 美化代码格式化 django-template
- android-livedata - 当应用程序从后台最大化时,可变 LiveData 不会更新 UI