开发者

Android - Content Values over writing existing rows

开发者 https://www.devze.com 2023-03-25 03:20 出处:网络
I\'m trying to insert values using ContentValues, I\'ve inserted 5 values to 5 columns After I run the application, I\'ve only the row with last set of values of ContentValues. The first four set is n

I'm trying to insert values using ContentValues, I've inserted 5 values to 5 columns After I run the application, I've only the row with last set of values of ContentValues. The first four set is not inserted.

      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("dat开发者_如何转开发e", "27 Jul 2011");

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


It is not hard to understand that ContentValues is some kind of a hashtable which implies that this peice of code

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

is ultimately overwriting the Value with key="name" 4 times and name is finally getting the last value!

For this to work, you should do it sequentially like this:

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);


The best way to approach to this is, insert all the values of the columns, and then continue with the next

Eg:

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

then now inset the values..

You can use a while loop and an array...

eg:

   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]);

do while the loop till it reaches the end of the array!


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);

like this you have to insert another 5 rows in your table.What you did is--putting values in ContentValues 5 times.So it takes the last entry before inserting in the table.You have to write 5 insert statements like this.I think now you will understand

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号