从 DatabaseSwingManager 连接时 HSQL 服务器模式引发异常 java.sql.SQLTransientConnectionException
Posted
技术标签:
【中文标题】从 DatabaseSwingManager 连接时 HSQL 服务器模式引发异常 java.sql.SQLTransientConnectionException【英文标题】:HSQL server mode while connection from DatabaseSwingManager throws exception java.sql.SQLTransientConnectionException 【发布时间】:2020-11-17 06:59:13 【问题描述】:我写了一个连接服务器模式的java代码
p.setProperty("server.database.3",
"file:G:/SERVERMODE/soamware;user=soamware;password=123@123");
p.setProperty("server.dbname.3", "soamware");
server.setProperties(p);
server.setLogWriter(null); // can use custom writer
server.setErrWriter(null); // can use custom writer
server.start();
try
//Registering the HSQLDB JDBC driver
Class.forName("org.hsqldb.jdbc.JDBCDriver");
con = DriverManager.getConnection("jdbc:hsqldb:hsql://ip/soamware;
file:G:/SERVERMODE/soamware;user=soamware;password=123@123");
此代码在带有 jdk8 和 hsqldb2.5.1 的 netbeans 中运行良好,但控制台显示构建未终止且仍在运行。当我连接到 SwingDatabaseManager 时
具有与 java 代码中提到的相同的 url、用户名和密码。它抛出上述异常。还请澄清,为什么我的程序不退出。我没有添加“server.shutdownCatalogs(1);”最后声明,因为这样我就不能在一个会话中执行多个操作。
【问题讨论】:
您的程序没有退出,因为您启动的服务器仍在运行。您的 DatabaseManagerSwing 图像不完整,未显示 URL 或异常。 【参考方案1】:因为你只用一个数据库启动服务器,你应该设置database.0
属性。您根本不应该在连接字符串上使用@
字符,因为它具有特殊含义。连接到服务器数据库时不应使用文件路径。仅使用 dbname.0
值。编辑代码如下:
p.setProperty("server.database.0", "file:G:/SERVERMODE/soamware;user=soamware;password=123x123");
p.setProperty("server.dbname.0", "soamware");
server.setProperties(p);
server.setLogWriter(null); // can use custom writer
server.setErrWriter(null); // can use custom writer
server.start();
try
Class.forName("org.hsqldb.jdbc.JDBCDriver");
con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/soamware", "soamware", "123x123");
【讨论】:
以上是关于从 DatabaseSwingManager 连接时 HSQL 服务器模式引发异常 java.sql.SQLTransientConnectionException的主要内容,如果未能解决你的问题,请参考以下文章
mysql连接超时后无法从apache DBCP连接池获取连接
为啥 ConnectException:连接被拒绝:从 HttpURLConnection.getResponseCode() 抛出连接? [复制]