Postgresql 我可以从JDBC连接为Postgres设置会话变量吗
出于性能原因,我正试图限制对数据库的往返。目前,我连接并向postgres发布了一系列声明,如Postgresql 我可以从JDBC连接为Postgres设置会话变量吗,postgresql,jdbc,Postgresql,Jdbc,出于性能原因,我正试图限制对数据库的往返。目前,我连接并向postgres发布了一系列声明,如SET TIMEZONE='America/New_York'。许多数据库允许将会话变量和类似设置作为jdbc url的一部分传递到数据库,即jdbc:postgresql://localhost:5435/test?timezone=America/New_York或者像这样将其添加到属性列表中 String url = "jdbc:postgresql://localhost/test:5435";
SET TIMEZONE='America/New_York'
。许多数据库允许将会话变量和类似设置作为jdbc url的一部分传递到数据库,即jdbc:postgresql://localhost:5435/test?timezone=America/New_York
或者像这样将其添加到属性列表中
String url = "jdbc:postgresql://localhost/test:5435";
Properties props = new Properties();
props.setProperty("user","fred");
props.setProperty("password","secret");
props.setProperty("timezone","America/New_York");
Connection conn = DriverManager.getConnection(url, props);
如果postgres支持这一点,并且考试失败,我无法找到确切的信息。说:
连接参数
[……]
- 选项=字符串
\
)转义<代码>\\表示文字反斜杠
所以你应该使用
props.setProperty(“选项”,“-c时区=美国/纽约”);
说:
连接参数
[……]
- 选项=字符串
\
)转义<代码>\\表示文字反斜杠
所以你应该使用
props.setProperty(“选项”,“-c时区=美国/纽约”);
“一系列语句,如”-如果使用分隔查询,则可以在一次往返中发送所有这些查询代码>。虽然JDBC规范不允许通过一个execute()
调用运行多个语句,但Postgres JDBC驱动程序确实支持这一点,例如stmt.execute(“set timezone=”…”;set work_mem='64MB';set…;”
“一系列语句,如”-如果使用分隔查询,则可以在一次往返中发送所有这些查询代码>。虽然JDBC规范不允许使用一个execute()
调用运行多个语句,但Postgres JDBC驱动程序确实支持这一点,例如stmt.execute(“set timezone=”…”;set work_mem='64MB';set…;”
不清楚文档中的有效内容。但是当我尝试它时,我得到了PSQLException:FATAL:server process的无效命令行参数:timezone=UTC
将选项设置为-c timezone=America/New_-York
没有错误,但实际上没有为会话做任何事情。抱歉,我没有意识到您也需要-c
。也许以后会覆盖该值?在PostgreSQL server上记录SQL语句并查看。从文档中不清楚哪些是有效的。但是当我尝试它时,我得到了PSQLException:FATAL:server process的无效命令行参数:timezone=UTC
将选项设置为-c timezone=America/New_-York
没有错误,但实际上没有为会话做任何事情。抱歉,我没有意识到您也需要-c
。也许以后会覆盖该值?在PostgreSQL server上记录SQL语句,请参阅。