我可以从 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";
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 支持这并且测试失败,我找不到明确的信息。

文档说:

连接参数

[...]

  • 选项= 字符串

指定"选项"连接初始化参数。

此属性的值可能包含空格或其他特殊字符,如果在连接 URL 中提供,则应对其进行正确编码。空格被视为分隔命令行参数,除非使用反斜杠 (转义;\表示文字反斜杠。

所以你应该使用

props.setProperty("options", "-c timezone=America/New_York");

最新更新