将int数组中的每个值插入数据库 - Java

时间:2013-02-14 12:32:26

标签: java sql oracle sqlexception

我所拥有的是一个多选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
    }

我是否正确插入了值列表?或者我应该从另一个角度接近这个?

2 个答案:

答案 0 :(得分:0)

我看到的一个缺陷是:

stmt.executeQuery();    // execute query

应该是

stmt.executeUpdate();   // execute query

执行DML(数据操作查询)时,您应该使用 PreparedStatement#executeUpdate()

答案 1 :(得分:0)

看起来您在查询中传递的是无效数字。检查homeIDfeatures[i]的值。

ORA-01722原因:

  

尝试将字符串转换为数字失败   因为字符串不是有效的数字文字。只要   可以使用包含数字数据的数字字段或字符字段   在算术函数或表达式中。只有数字字段可能   加入或减去日期。

行动:

  

检查函数或表达式中的字符串。检查一下   它们只包含数字,符号,小数点和字符   “E”或“e”并重试操作。