我在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);
}
}
我无法理解错误在哪里?请帮我 。
答案 0 :(得分:2)
显示FP_BIOMETRIC_DATA
的表格结构,检查'CUST_NO'
和'SERIAL_NO'
,查看其类型为varchar
或number
。
答案 1 :(得分:2)
错误代码ORA-01722声明您正在将字符串值转换为int并且SQL正在抛出错误
检查(String)键是否声明为STRING或INTEGER
<强>描述强>
当您遇到ORA-01722错误时,会出现以下错误消息 将出现:
ORA-01722:无效号码
<强>原因强>
您执行了一个尝试将字符串转换为的SQL语句 数字,但没有成功。
解决强>
解决此Oracle错误的选项是:
选项#1
仅包含数字值的数字字段或字符字段 可用于算术运算。确保所有表达式 评估数字。
选项#2
如果您要添加或减去日期,请确保您 从日期添加/减去一个数值。