Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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 实体表错误13037:非法的双PREC常量_Java_Jdbc_Ibm Soliddb - Fatal编程技术网

Java 实体表错误13037:非法的双PREC常量

Java 实体表错误13037:非法的双PREC常量,java,jdbc,ibm-soliddb,Java,Jdbc,Ibm Soliddb,在尝试使用Java JDBC代码向SolidDB中添加记录时,出现以下错误 以下是引发异常的方法: public void addData(User data) { Connection conn = null; try { conn = dataSource.getConnection(); if (conn == null || conn.isClosed()) { throw new RuntimeExcept

在尝试使用Java JDBC代码向SolidDB中添加记录时,出现以下错误

以下是引发异常的方法:

    public void addData(User data) {
    Connection conn = null;
    try {
        conn = dataSource.getConnection();
        if (conn == null || conn.isClosed()) {
            throw new RuntimeException("Could not open connection");
        }
        String query="INSERT INTO USER "
                + "(ID, NAME, PASSWORD, ENABLED, REQUIRE_RESET)"
                + "VALUES (?, ?, ?, ?, ?);";

        PreparedStatement ps = conn.prepareStatement(query);
        // "ID" column is INTEGER, and partition field in UserData is int.
        ps.setString(1, data.getId());
        ps.setString(2, data.getName());
        ps.setString(3, data.getPassword());
        // "ENABLED" column is INTEGER, and enabled field in UserData is boolean.
        ps.setInt(4, data.isEnabled()? 1:0); 
        ps.setString(5, data.isRequireReset()?"Y":"N");
        if (ps.executeUpdate() < 1) {
            throw new RuntimeException("Could not save User, executeUpdate() returned a value < 1");
        }

    } Catch (SQLException e) {
        throw new DataLayerException("Could not save the User Data.", e);
    } finally {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
            }
        }
    }
}
public void addData(用户数据){
连接conn=null;
试一试{
conn=dataSource.getConnection();
如果(conn==null | | conn.isClosed()){
抛出新的RuntimeException(“无法打开连接”);
}
String query=“插入用户”
+(ID、名称、密码、已启用、需要重置)
+“值(?,?,?,?);”;
PreparedStatement ps=conn.prepareStatement(查询);
//“ID”列是整数,UserData中的分区字段是int。
ps.setString(1,data.getId());
ps.setString(2,data.getName());
ps.setString(3,data.getPassword());
//“ENABLED”列为整数,UserData中的ENABLED字段为布尔值。
ps.setInt(4,data.isEnabled()?1:0);
ps.setString(5,data.isRequireReset()?“Y”:“N”);
如果(ps.executeUpdate()<1){
抛出新的RuntimeException(“无法保存用户,executeUpdate()返回的值<1”);
}
}捕获(SQLE异常){
抛出新的DataLayerException(“无法保存用户数据。”,e);
}最后{
如果(conn!=null){
试一试{
康涅狄格州关闭();
}捕获(SQLE异常){
}
}
}
}
我尝试过直接努力记录这些价值观,但还是失败了。 如果我从insert语句中删除“ID”和“ENABLED”列,则insert将成功


提前谢谢

PreparedStatement
索引为(另请参见)。因为您使用0,并且驱动程序没有警告您,所以导致问题的所有内容都已“移动”

修正:


最后我得到了解决方案,这是因为一个愚蠢的语法错误。
当我在结尾去掉分号时,它起作用了

运行此代码时得到的异常/堆栈跟踪是什么?@Alfabravo我只有以下信息:嵌套异常是java.sql.SQLException:[Solid JDBC 7.0.0.2 Build 2012-04-20]Solid Table Error 13037:非法的DOUBLE PREC常量。我没有访问日志的权限。根据一些用户手册,这个错误意味着你引入了soble双精度数据作为常量,它不是有效的双精度数据。你确定字段的数据类型吗?很好,catch+1,我已经更正了我的代码并重新运行,仍然得到相同的错误!。所以我将用你的更正更新我的问题,谢谢。
ps.setString(1, data.getId());
ps.setString(2, data.getName());
ps.setString(3, data.getPassword());
ps.setInt(4, data.isEnabled()? 1:0); 
ps.setString(5, data.isRequireReset()?"Y":"N");