我想使用pg服务器访问h2db,因为我想使用c语言中的odbc访问db。 所以我现在正在使用 java 测试使用 pg 服务器对 db 的访问。
import java.sql.*;
public class Main {
public static void main(String[] a) {
try {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:tcp://localhost:5435/~/db_test;CIPHER=AES;", "sa", "0df ");
System.out.println("success");
conn.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
打印错误: org.h2.jdbc.JdbcSQLNonTransientConnectionException:连接已损坏:“意外状态 1375731712”[90067-214]
这个问题有解决办法吗?
我尝试将其连接到tcp服务器,然后成功了。但不是pg
首先,如果数据库尚不存在,则需要创建它。您可以使用 JDBC 或任何其他方式。对于加密数据库,数据库文件的密码和数据库用户的密码必须一起指定,并用空格字符分隔:
DriverManager.getConnection("jdbc:h2:~/db_test;CIPHER=AES", "sa",
"file_password user_password")
.close();
您无法通过 PG 协议传递 H2 特定的路径和设置,因此您需要在启动 H2 的 PG 服务器时使用
-key
选项为您的数据库创建一个别名:
Server.createPgServer("-pgPort", "5435",
"-key", "db_test", "~/db_test;CIPHER=AES")
.start();
您的客户端应用程序的类路径中必须有 PostgreSQL JDBC Driver,使用此驱动程序而不是 H2 自己的驱动程序来建立连接:
Connection conn = DriverManager.getConnection(
"jdbc:postgresql://localhost:5435/db_test",
"sa", "file_password user_password");