通过java将数据输入H2数据库时出现SQL异常

Posted

技术标签:

【中文标题】通过java将数据输入H2数据库时出现SQL异常【英文标题】:Getting SQL exception while entering data into H2 database through java 【发布时间】:2017-03-11 07:08:23 【问题描述】:

公共类 RegisterDao

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

Connection dbConnection = null;
PreparedStatement pstmt = null;
public void forRegister(String name,int age,String address,String password,String email,String uuid)
    try 
        Class.forName(DB_DRIVER);
        System.out.println("Connecting to a selected database...");
     catch (ClassNotFoundException e) 
        System.out.println(e.getMessage());
    
    try 
        dbConnection = DriverManager.getConnection(DB_CONNECTION, DB_USER,
                DB_PASSWORD);
    System.out.println("Connected database successfully...");
    //Statement stat = dbConnection.createStatement();
    //ResultSet rs;
    if (dbConnection != null)
        System.out.println("starting entering data");
        pstmt=dbConnection.prepareStatement("insert into registrationtable (?,?,?,?,?,?)");

        pstmt.setString(1, name);
        pstmt.setInt(2, age);
        pstmt.setString(3, address);
        pstmt.setString(4, password);
        pstmt.setString(5, email);
        pstmt.setString(6, uuid);

        pstmt.executeUpdate();
        System.out.println("details are added");
    
     catch (SQLException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
      finally
        //finally block used to close resources
        try
           if(dbConnection!=null)
               dbConnection.close();
        catch(SQLException se)
           se.printStackTrace();
        //end finally try
     //end try

我得到的异常: org.h2.jdbc.JdbcSQLException:SQL 语句中的语法错误“INSERT INTO REGISTRATIONTABLE (?[*],?,?,?,?,?)”;预期的“标识符”; SQL语句:insert intoregistrationtable(?,?,?,?,?,?) [42001-193]

请帮忙。提前致谢。

【问题讨论】:

插入语句的语法如下:h2database.com/html/grammar.html#insert。你的不尊重这种语法。 【参考方案1】:

试试这个 sql:

 insert into registrationtable (name, age, address, password, email, uuid) values (?, ?, ?, ?, ?, ?)"

其中名称、年龄、地址、密码、电子邮件、uuid 是表字段名称,因此您可能必须重命名它们以适合您的表架构。

【讨论】:

以上是关于通过java将数据输入H2数据库时出现SQL异常的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 H2 数据库更新 JDBC ResultSet 时出现异常

尝试连接到 Activiti 的 H2 数据库设置时出现异常

将数据写入 Hive Spark SQL 时出现 ArrayIndexOutOfBoundsException 异常

通过 JOOQ-meta 访问 H2 元模型时出现 SQLException

在测试环境中使用 Eclipselink 和 h2 生成序列时出现异常

添加ORDER BY时出现“SQL0802 - 数据映射错误的数据转换”异常