Android - Значения содержимого поверх записи существующих строк - PullRequest
5 голосов
/ 03 августа 2011

Я пытаюсь вставить значения, используя ContentValues, я вставил 5 значений в 5 столбцов. После запуска приложения у меня есть только строка с последним набором значений ContentValues. Первые четыре набора не вставлены.

      ContentValues cv = new ContentValues();
       cv.put("name", "Cs Tech");
       cv.put("name", "Wipro");
       cv.put("name", "TCS");
       cv.put("name", "Infosys");
       cv.put("name", "Cognizant");

       cv.put("mail", "joe@info.com");
       cv.put("mail", "bru@wipro.com");
       cv.put("mail", "jen@tcs.com");
       cv.put("mail", "ram@infosys.com");
       cv.put("mail", "cts@cts.com");

       cv.put("contact", "180 151 2010");
       cv.put("contact", "180 151 2011");
       cv.put("contact", "180 151 2012");
       cv.put("contact", "180 151 2013");
       cv.put("contact", "180 151 2014");

       cv.put("date", "27 Jul 2011");   
       cv.put("date", "27 Jul 2011");
       cv.put("date", "27 Jul 2011");
       cv.put("date", "27 Jul 2011");
       cv.put("date", "27 Jul 2011");

       this.db.insert(TABLE_NAME, "name", cv);

Ответы [ 3 ]

8 голосов
/ 03 августа 2011

Нетрудно понять, что ContentValues является своего рода хеш-таблицей, которая подразумевает, что этот кусок кода

    cv.put("name", "Cs Tech");
    cv.put("name", "Wipro");
    cv.put("name", "TCS");
    cv.put("name", "Infosys");
    cv.put("name", "Cognizant"); 

в конечном итоге перезаписывает значение с ключом = "имя" 4 раза и имянаконец получает последнее значение!

Чтобы это работало, вы должны сделать это последовательно так:

ContentValues cv = new ContentValues();
       cv.put("name", "Cs Tech");
       cv.put("mail", "joe@info.com");         
       cv.put("contact", "180 151 2010");
       cv.put("date", "27 Jul 2011");

       this.db.insert(TABLE_NAME, "name", cv);

       cv.put("name", "Wipro");
       cv.put("mail", "bru@wipro.com");
       cv.put("contact", "180 151 2011");
       cv.put("date", "27 Jul 2011");

       this.db.insert(TABLE_NAME, "name", cv);

       cv.put("name", "TCS");
       cv.put("mail", "jen@tcs.com");  
       cv.put("contact", "180 151 2012");
       cv.put("date", "27 Jul 2011");

       this.db.insert(TABLE_NAME, "name", cv);

       cv.put("name", "Infosys");
       cv.put("mail", "ram@infosys.com");
       cv.put("contact", "180 151 2013");
       cv.put("date", "27 Jul 2011");

       this.db.insert(TABLE_NAME, "name", cv);

       cv.put("name", "Cognizant");
       cv.put("mail", "cts@cts.com");
       cv.put("contact", "180 151 2014");
       cv.put("date", "27 Jul 2011");

       this.db.insert(TABLE_NAME, "name", cv);
2 голосов
/ 03 августа 2011

Лучший способ подойти к этому - вставить все значения столбцов, а затем перейти к следующему

Например:

   cv.put("name", "gautam");
   cv.put("id", "cse08119");
   cv.put("country", "tamilnadu");
   cv.put("city", "coimbatore");
   cv.put("pin", "636213");

, а затем вставить значения ..

Вы можете использовать цикл while и массив ...

Например:

   cv.put("name",namearray[i]);
   cv.put("id",id[i]);
   cv.put("country", countryname[i]);
   cv.put("city",countryarray[i]);
   cv.put("pin", pincode[i]);

делать пока цикл не достигнет конца массива!

0 голосов
/ 03 августа 2011
ContentValues cv = new ContentValues();
cv.put("name", "Cs Tech");
cv.put("mail", "joe@info.com");
cv.put("contact", "180 151 2010");
cv.put("date", "27 Jul 2011");   
this.db.insert(TABLE_NAME, "name", cv);

вот так, вам нужно вставить еще 5 строк в вашу таблицу. Что вы сделали - это поместили значения в ContentValues ​​5 раз. Так что перед вставкой в ​​таблицу требуется последняя запись. Вам нужно написать 5 операторов вставки, как это . Я думаю, теперь вы поймете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...