Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在sql2o中插入时出错_Java_Sql_Jdbc_H2_Sql2o - Fatal编程技术网

Java 在sql2o中插入时出错

Java 在sql2o中插入时出错,java,sql,jdbc,h2,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

我想创建一个表并在其中插入一些值。我正在尝试使用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();
        }
    }
}
毕竟我犯了一个错误:

准备语句时出错-列计数不匹配;SQL 声明:插入个人价值观(?,)[21002-191]


SQL语句是正确的,列的名称和类型彼此匹配,我真的不明白问题出在哪里

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

我无法重现您的问题。我使用H2和sql2o的最新产品版本将您的代码复制并粘贴到Maven项目中,效果很好。尝试删除H2数据库文件或在代码开头发出一个
DROP TABLE PERSONS
。哦,我真的忘了删除表!谢谢,现在它工作了!