0

我拥有的是一个多选 Jlist 框,用户可以选择几个功能。我获取这些 ID 并将它们存储到一个 int[] 数组中。

我试图用这些做的是将它们插入到我的数据库库中,如下所示。但这导致了

 java.sql.SQLException: ORA-01722: invalid number

出现异常。有问题的行是执行语句的点。我检查了数组不为空并产生正确的值。我不确定是什么导致了这个错误。

 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
    }

我是否正确插入了值列表?还是我应该从不同的角度来解决这个问题?

4

2 回答 2

0

我看到的一个缺陷是:

stmt.executeQuery();    // execute query

应该

stmt.executeUpdate();   // execute query

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

于 2013-02-14T12:34:48.953 回答
0

看起来您在查询中传递了一个无效的数字。检查 和 的homeIDfeatures[i]

ORA-01722 原因:

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

行动:

检查函数或表达式中的字符串。检查它们是否仅包含数字、符号、小数点和字符“E”或“e”,然后重试该操作。

于 2013-02-14T12:35:41.127 回答