2013-02-14 34 views
0

我所拥有的是多选Jlist框,用户可以选择多个功能。我抓住这些ID并将它们存储到一个int []数组中。将int数组中的每个值插入数据库 - Java

我想要做的是将它们插入到我的数据库中,如下所示。但是这导致出现异常

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

你确定home_id字段在数据库中是varchar吗?它是它可以解释错误的数字。 – sbk 2013-02-14 12:38:27

+0

你可以分享'homeID'和'features'数组的值吗? – Apurv 2013-02-14 12:42:30

+1

在不相干的笔记上,您应该只准备一次陈述。多次准备语句会破坏游标可重用性的目的。 – 2013-02-14 12:56:07

回答

0

看起来你传递一个非查询中有效的号码。检查homeIDfeatures[i]的值。

ORA-01722原因:

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

操作:

入住功能或表达的字符串。检查它们是否包含数字,符号,小数点以及字符“E”或“e” ,然后重试该操作。