我所拥有的是一个多选Jlist框,用户可以选择多个功能。我抓住这些ID并将它们存储到int []数组中。
我想用这些做的是将它们插入我的数据库库,如下所示。但这导致了
java.sql.SQLException: ORA-01722: invalid number
出现异常。有问题的行是执行语句的点。我已检查数组不为null并生成正确的值。我不确定会导致此错误的原因。
for (int i = 0; i < features.length; i++) {
try {
String strQuery = "INSERT INTO home_feature(home_id, feature_id) VALUES (?, ?)";
PreparedStatement stmt = conn.prepareStatement(strQuery);//prepare the SQL Query
stmt.setString(1, homeID);//insert homeid
stmt.setInt(2, features[i]);//insert featureid.
stmt.executeQuery();//execute query
dataAdded = true;//data successfully inserted
} catch (Exception e) {
e.printStackTrace();
dataAdded = false;//there was a problem, data not inserted
}//end try
}
我是否正确插入了值列表?或者我应该从另一个角度接近这个?
答案 0 :(得分:0)
我看到的一个缺陷是:
stmt.executeQuery(); // execute query
应该是
stmt.executeUpdate(); // execute query
执行DML(数据操作查询)时,您应该使用 PreparedStatement#executeUpdate()
答案 1 :(得分:0)
看起来您在查询中传递的是无效数字。检查homeID
和features[i]
的值。
ORA-01722原因:
尝试将字符串转换为数字失败 因为字符串不是有效的数字文字。只要 可以使用包含数字数据的数字字段或字符字段 在算术函数或表达式中。只有数字字段可能 加入或减去日期。
行动:
检查函数或表达式中的字符串。检查一下 它们只包含数字,符号,小数点和字符 “E”或“e”并重试操作。