我在 java 应用程序中使用 jdbc 连接到 hsqldb 时遇到问题。在主类中从 json 解析为 java 后,我在列表中得到了 3 个对象,我试图将它们保存到数据库中。
这是 Dao 类
public class EventDao {
private static final String URL = "jdbc:hsql:file:C:/Applications/appName//APPFOLDER";
private static final String USER = "sa";
private static final String PASS = "";
private Connection connection;
public EventDao() {
try {
Class.forName("org.hsqldb.jdbcDrive");
connection = DriverManager.getConnection(URL, USER, PASS);
} catch (ClassNotFoundException e) {
System.out.println("Couldnot establish connection");
} catch (SQLException e) {
e.printStackTrace();
}
}
public void save(Event event) {
final String sql = "insert into event(id,state,timestamp,type,host,alert) values (?,?,?,?,?,?)";
try {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, event.getId());
preparedStatement.setString(2, event.getState());
preparedStatement.setString(3, event.getTimestamp().toString());
preparedStatement.setString(4, event.getType());
preparedStatement.setString(5, event.getHost());
preparedStatement.setString(6, event.getAlert().toString());
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void close() {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
这是我尝试将对象事件保存到数据库时的主要内容(列表有 3 个对象)
public static void main(String[] args) {
EventParser eventParser = new EventParser();
eventParser.mainLoop();
}
public void mainLoop() {
try {
EventDao eventDao = new EventDao();
Map<String, EventWrapper> eventsFromFile = readEventsFromFile();
List<Event> eventsToSave = calculateEventTime(eventsFromFile);
for (Event event : eventsToSave) {
eventDao.save(event);
}
eventDao.close();
System.out.println(eventsFromFile);
} catch (IOException e) {
e.printStackTrace();
}
}
调试后发现连接为空。有什么想法吗?
最佳答案
URL 的正确形式是:
URL = "jdbc:hsqldb:file:C:/Applications/appName/APPFOLDER";
Class.forName("org.hsqldb.jdbcDrive")
确保 HSQLDB jar 位于您的类路径上并从 jar 加载 JDBC 驱动程序类。这样做没有错误。错误消息表明没有可用于错误 jdbc:hsql:file
url 的驱动程序。
关于java - 无法使用 jdbc java 连接到 hsqldb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57186692/