JSON Array Loop Вставка в базу данных Android SQLite - PullRequest
1 голос
/ 22 сентября 2011

У меня есть следующий фрагмент цикла через массив JSON и вставка данных в базу данных. Моя проблема в том, что он не вставляет все записи. Если у меня 6 записей, он вставит только 5 из 6. Если у меня 5 записей, он вставит только 4? Когда я отлаживаю storeArray.length, он показывает общее количество записей в массиве как 6. Что я делаю неправильно, что он не зацикливается и не вставляет все записи в массив?

Вот строка 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 = new 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")+"' )");

        }   

1 Ответ

0 голосов
/ 22 сентября 2011

Я думаю, store.getString("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")});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...