2013-02-14 2 views
0

У меня есть многоэкранный список Jlist, который пользователи выбирают для нескольких функций. Я беру идентификатор из них и сохраняю их в массив int [].Вставка каждого значения из массива int в базу данных - Java

Что я пытаюсь сделать с ними, вставьте их в базу данных, как показано ниже. Но это вызывает

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

исключение. Соответствующая строка - это точка, в которой выполняется оператор. Ive проверил, что массив не равен 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

Вы уверены, что домашнее поле varchar в базе данных? Это было число, которое могло объяснить ошибку. – sbk

+0

Можете ли вы поделиться значениями 'homeID' и' features' array? – Apurv

+1

О несвязанной ноте вы должны подготовить заявление только один раз. Подготовка инструкции несколько раз поражает цель повторного использования курсора. –

ответ

0

Один недостаток я вижу:

stmt.executeQuery(); // execute query 

должен быть

stmt.executeUpdate(); // execute query 

При выполнении DML (манипуляция данных запросов), вы должны использовать PreparedStatement#executeUpdate()

0

Похоже, вы передаете Некоммерческие допустимое число в запросе. Проверьте значения homeID и features[i].

ORA-01722 Причина:

Попытка преобразование символьной строки в число не удалось , потому что символьная строка не является допустимым числовой литерал. Только числовые поля или поля символов, содержащие числовые данные, могут использоваться в арифметических функциях или выражениях. Только числовые поля могут быть добавлены или вычтены из дат.

Действие:

Проверьте строки символов в функции или выражения. Убедитесь, что содержат только цифры, знак, десятичную точку и символ «E» или «e» и повторите операцию.

Смежные вопросы