数据转换错误 H2 数据库

Posted

技术标签:

【中文标题】数据转换错误 H2 数据库【英文标题】:Data Conversion Error H2 Database 【发布时间】:2016-02-25 07:11:30 【问题描述】:

我正在从 Java 应用程序运行数据库查询。

String id = app.getVariable("Product Id"),
                name = app.getVariable("Product Name"),
                rate = app.getVariable("Rate"),
                type = app.getVariable("Type"),
                desc = app.getVariable("Description"),
                qty = app.getVariable("Quantity"); // Returns String from TextFields

        type = type.equalsIgnoreCase("LIMITED") ? "TRUE" : "FALSE";


        try 
            String query = "UPDATE COUNTER.PRODUCTS SET TITLE = ? AND RATE = ? AND IS_LIMITED = ? AND DESCRIPTION = ? WHERE ID = ?";
            PreparedStatement stmt = MainApp.getConnection().prepareStatement(query);

            stmt.setString(1, name);
            stmt.setDouble(2, Double.parseDouble(rate));
            stmt.setBoolean(3, Boolean.parseBoolean(type));
            stmt.setString(4, desc);
            stmt.setInt(5, Integer.parseInt(id));

            stmt.executeUpdate();
         catch(Exception ex1)
            System.out.println( ex1.toString() );
        

但是遇到了SQLException

org.h2.jdbc.JdbcSQLException:数据转换错误转换“扫描”; SQL 语句: 更新 COUNTER.PRODUCTS 设置标题 = ?和速率 = ?和 IS_LIMITED = ?和描述 = ?在哪里 ID = ? [22018-187]

插入数据查询工作正常,但我无法执行更新查询。

【问题讨论】:

h2database.com/html/grammar.html#update 【参考方案1】:

这样写你的查询:

  UPDATE COUNTER.PRODUCTS SET TITLE = ? ,RATE = ? ,IS_LIMITED = ? ,DESCRIPTION = ? WHERE ID = ?

使用逗号, 代替and

【讨论】:

以上是关于数据转换错误 H2 数据库的主要内容,如果未能解决你的问题,请参考以下文章

数据转换错误 H2 数据库

使用JAVA UUID作为主键时H2内存数据库错误“数据转换错误转换”

如何修复数据转换错误:jdbcTemplate.update,将 Enum 写入 H2 数据库

H2 数据库 CSVREAD 和日期转换

将 h2 数据库从 h2.db 转换为 mv.db

H2 - CREATE TABLE 创建错误的数据类型