java - 在 sql2o 中插入时出错

标签 java sql jdbc h2 sql2o

我想创建表格并向其中插入一些值。我正在尝试在下面的代码中使用 H2 数据库和 sql2o 框架来做到这一点:

public class Main {

    private static final String DB_DRIVER = "org.h2.Driver";
    private static final String DB_CONNECTION = "jdbc:h2:~/test";
    private static final String DB_USER = "";
    private static final String DB_PASSWORD = "";
    static String TABLE = "PERSONS";
    static Sql2o sql2o;

    public static void main(String[] args) throws Exception, SQLException {
        sql2o = new Sql2o(DB_CONNECTION, DB_USER, DB_PASSWORD);
        createTable();
        insertIntoTable();
    }

    public static void createTable() {
        final String tableSql = "CREATE TABLE IF NOT EXISTS " + TABLE + " (id int, name varchar(255))";
        try (org.sql2o.Connection con = sql2o.beginTransaction()) {
            con.createQuery(tableSql).executeUpdate();
            con.commit();
            con.close();
        }
    }

    public static void insertIntoTable() {
        String insertSql = "insert into " + TABLE + " values (:id, :name)";
        try (org.sql2o.Connection con = sql2o.open()) {
            con.createQuery(insertSql).addParameter("id", 1).addParameter("name", "test").executeUpdate();
            con.close();
        }
    }
}

毕竟我得到一个错误:

Error preparing statement - Column count does not match; SQL statement: insert into PERSONS values (?, ?) [21002-191]

SQL语句正确,列的名称和类型都匹配,实在是搞不懂是什么问题。

最佳答案

现有的 PERSONS 表与 CREATE TABLE IF NOT EXISTS 语句中的结构不匹配。删除并重新创建表解决了问题。

关于java - 在 sql2o 中插入时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37227999/

相关文章:

java - Tomcat 6.0 上的 SSL

php - 如何查找给定句子中存在的列值? mysql

php - 根据另一列的值按不同列排序

java - 在eclipse中使用java访问mysql数据库

java - 连接到 AS400 DB2 服务器 JDBC 时出错

java - 在java中单个语句中执行多个查询

JavaFX - 水平字幕文本

java - AspectJ - 模式签名

java - 使用java正则表达式搜索多个ora错误消息

sql - 在 PostgreSQL 中分组 AND 和 OR 条件