stmt.executeUpdate()返回java.sql.SQLException:ORA-01722:无效的数字

时间:2017-03-27 06:57:55

标签: java oracle

我在oracle中有FP_BIOMETRIC_DATA表,其主键是CUST_NO和SERIAL_NO。 Blob列是FINGER_DATA。所以我想在这个表中插入一条记录。代码如下:

dallases

但是当我运行此代码时,它会给我以下错误:

public void saveFingerToDatabase(String username , String key , byte[] data)
    {
        try {
            connection =  DBConnectionHandler.getConnection();
            PreparedStatement stmt = connection.prepareStatement("insert into FP_BIOMETRIC_DATA (CUST_NO,SERIAL_NO,FINGER_DATA,KEY_VALUE) values (?,?,?,?)");
            stmt.setInt(1, Integer.parseInt(username));
            stmt.setInt(2, 1);
            stmt.setBytes(3, data);
            stmt.setString(4, key);
            stmt.executeUpdate();
            connection.commit();
        } catch (SQLException ex) {
            Logger.getLogger(SaveDataToDatabase.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            connection.close();
        } catch (SQLException ex) {
            Logger.getLogger(SaveDataToDatabase.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

我无法理解错误在哪里?请帮我 。

2 个答案:

答案 0 :(得分:2)

显示FP_BIOMETRIC_DATA的表格结构,检查'CUST_NO''SERIAL_NO',查看其类型为varcharnumber

答案 1 :(得分:2)

错误代码ORA-01722声明您正在将字符串值转换为int并且SQL正在抛出错误

检查(String)键是否声明为STRING或INTEGER

  

<强>描述

     

当您遇到ORA-01722错误时,会出现以下错误消息   将出现:

     

ORA-01722:无效号码

     

<强>原因

     

您执行了一个尝试将字符串转换为的SQL语句   数字,但没有成功。

     

解决

     

解决此Oracle错误的选项是:

     

选项#1

     

仅包含数字值的数字字段或字符字段   可用于算术运算。确保所有表达式   评估数字。

     

选项#2

     

如果您要添加或减去日期,请确保您   从日期添加/减去一个数值。

https://www.techonthenet.com/oracle/errors/ora01722.php