2017-09-05 15 views
-2

データベースを更新するためにループを作成します。コードがテーブルに存在する場合、プログラムはデータを更新します。コードがテーブルに存在しない場合、プログラムはデータをINSERTします。データベースへのjavaデータの更新エラー

実行中、最初のコードはテーブルに存在しますが、プログラムは例外 "キー 'プライマリ'の重複したエントリをキャッチします。

ありがとうございます。

for (int i = 0; i < jsonarray.length(); i++) { 
      JSONObject obj = jsonarray.getJSONObject(i); 
      String code = obj.getString("a"); 
      double lastprice = obj.getDouble("l"); 
      double change = obj.getDouble("k"); 
      double dayshigh = obj.getDouble("v"); 
      double dayslow = obj.getDouble("w"); 

      ResultSet rs = st.executeQuery(iName); 

      while (rs.next()) { 
       String hihi = rs.getString("iName"); 
       if (rs.getString("iName").equals(code)) { 
        String query = "UPDATE Duong SET LastPrice = ?, iChange = ?, DaysHigh = ?, DaysLow = ? where iName = ?"; 
        PreparedStatement preparedStmt = conn.prepareStatement(query); 
        preparedStmt.setDouble(1, lastprice); 
        preparedStmt.setDouble(2, change); 
        preparedStmt.setDouble(3, dayshigh); 
        preparedStmt.setDouble(4, dayslow); 
        preparedStmt.setString(5, code); 
        preparedStmt.executeUpdate(); 
       } else { 
        st.executeUpdate("INSERT INTO Duong " 
          + "VALUES ('" + code + "'," + lastprice + "," + change + "," + dayshigh + "," + dayslow + ")"); 
       } 

      } 

     } 
     conn.close(); 

    } catch (Exception e) { 
     System.err.println("Got an exception!"); 
     System.err.println(e.getMessage()); 
    } 
+0

挿入しようとすると、ロジックが間違っていることを意味します。 – soorapadman

答えて

0

データベースから選択したクエリ自体はありませんが、複数の結果が返されると仮定します。別の株式シンボルを含む1つの行は、重複するキーエラーにつながる新しい行を挿入しようとします。