2011-09-22 175 views
1

我有以下片段循環通過JSON數組並將數據插入數據庫。我的問題是它沒有插入所有的記錄。如果我有6條記錄,它只會插入5條6.如果我有5條記錄,它只會插入4條記錄?當我調試storesArray.length它顯示數組中的總記錄爲6.我做錯了,它不會循環並插入數組中的所有記錄?JSON數組循環插入到Android SQLite數據庫

這裏是一個的來自服務器的SQL字符串:

[{"id":"29","cId":"3","sName":"Milford Plaza Hotel","sNumber":"3061","sCustNm":"VS7997","sSalesman":"1234","sAddress":"","sContact":"","sPhone":""},{"id":"26","cId":"7","sName":"Circle K Bowling Green","sNumber":"5670","sCustNm":"VS7976","sSalesman":"1234","sAddress":"1091 N Main Street\r\nBowling Green, Ohio 43402","sContact":"","sPhone":""},{"id":"25","cId":"7","sName":"Circle K Bowling Green","sNumber":"5669","sCustNm":"VS7975","sSalesman":"1234","sAddress":"966 S Main Street\r\nBowling Green, OH 43402","sContact":"","sPhone":""},{"id":"22","cId":"6","sName":"Rock Branch Exxon","sNumber":"122","sCustNm":"VS7983","sSalesman":"1234","sAddress":"Rt 1 Box 34 A\r\nPoca, W.V.","sContact":"","sPhone":""},{"id":"23","cId":"6","sName":"Marathon Food Mart","sNumber":"156","sCustNm":"VS7984","sSalesman":"1234","sAddress":"2300 Pike Street\r\nParkerburg, W.V.","sContact":"Jenny","sPhone":""},{"id":"27","cId":"7","sName":"Circle K Dayton","sNumber":"5346","sCustNm":"VS7992","sSalesman":"1234","sAddress":"816 Waterveilt Ave\r\nDayton, OH 45420","sContact":"","sPhone":""}] 

JSONArray storesArray =新JSONArray(restults);

 for(int i = 0; i < storesArray.length(); i++){ 

      JSONObject store = storesArray.getJSONObject(i); 

      db.execSQL("INSERT INTO stores (sId, cId, sName, sAddress, sNumber, sSalesman, sCustNum, sPhone) " + 
         "VALUES ('"+store.getString("id")+"', '"+store.getString("cId")+"', '"+store.getString("sName")+"', '"+store.getString("sAddress")+"', '"+store.getString("sNumber")+"', '"+store.getString("sSalesman")+"', '"+store.getString("sCustNm")+"', '"+store.getString("sPhone")+"')"); 

     } 
+0

也請發佈ypu傳遞給'execSQL'的sql代碼 – Caner

+0

我已經將它添加到上面的代碼片段中。 –

回答

0

我猜store.getString("id")應該是您的主要列ID?你不應該在插入查詢中定義,數據庫會爲你做。

更重要的是:不要把字符串直接在查詢,因爲這是摧毀你的查詢一個偉大的方式(稱爲SQL注入)

做這樣的事情:

db.execSQL("INSERT INTO stores (sId, cId, sName, sAddress, sNumber, sSalesman, sCustNum, sPhone) " + 
    "VALUES (?, ?, ?, ?, ?, ?, ?)", 
    new Object [] { 
     store.getString("cId"), 
     store.getString("sName"), 
     store.getString("sAddress"), 
     store.getString("sNumber"), 
     store.getString("sSalesman"), 
     store.getString("sCustNm"), 
     store.getString("sPhone")}); 
+0

store.getString(「id」)不是我的主ID。它用於參考。它涉及在SQLite數據庫中創建的新表中的sId。但是,我將使用您的解決方案將數據插入數據庫。感謝那。對我原來的問題的任何幫助將是偉大的。 –