0

私が持っているのは、ユーザーがいくつかの機能を選択する複数選択の 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
    }

値のリストを正しく挿入していますか? それとも、別の角度からこれにアプローチする必要がありますか?

4

2 に答える 2

0

私が見る1つの欠陥は次のとおりです。

stmt.executeQuery();    // execute query

する必要があります

stmt.executeUpdate();   // execute query

DML (データ操作クエリ) を実行するときは、 PreparedStatement#executeUpdate()を使用する必要があります

于 2013-02-14T12:34:48.953 に答える
0

クエリで無効な数値を渡しているようです。homeIDとの値を確認しますfeatures[i]

ORA-01722 原因:

文字列が有効な数値リテラルではないため、文字列を数値に変換しようとして失敗しました。算術関数または式で使用できるのは、数値フィールドまたは数値データを含む文字フィールドのみです。日付に加算または日付から減算できるのは、数値フィールドのみです。

アクション:

関数または式の文字列を確認してください。数字、記号、小数点、および文字「E」または「e」のみが含まれていることを確認して、操作を再試行してください。

于 2013-02-14T12:35:41.127 に答える