java - 无法使用 jdbc java 连接到 hsqldb

标签 java database jdbc database-connection hsqldb

我在 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/

相关文章:

java - 运行 JUnit 测试时使用 PowerMockito 获取内部状态错误

java - 从数组中的特定元素中删除额外的空间

java - Jmeter - 未知错误写入事件

mysql - 解释对 MySQL 和 Puma 服务器的需求

php - 删除带有索引的大型 MySQL 表的性能

tomcat - Grails/Tomcat/MySQL 过时连接错误,即使在使用 JNDI 时也是如此?

database - 为什么关系数据库中不允许出现重复行?

java - Jdbc连接池,按用户名进行连接缓存

java - 在同一项目中使用 Java 和 Kotlin Activity

sql - 关于从mysql中的表中删除数据库数据