【问题标题】:Android - Content Values over writing existing rowsAndroid - 内容值覆盖现有行
【发布时间】:2011-08-03 11:25:47
【问题描述】:

我正在尝试使用 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);

【问题讨论】:

    标签: java android database sqlite


    【解决方案1】:

    不难理解ContentValues 是某种哈希表,暗示这段代码

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

    最终用 key="name" 覆盖 Value 4 次,name 终于得到最后一个值!

    为此,您应该像这样按顺序执行:

    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】:

      解决这个问题的最佳方法是,插入列的所有值,然后继续下一步

      例如:

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

      执行while循环直到它到达数组的末尾!

      【讨论】:

      • 是的,它在 while 循环中工作,但它也显示给定数组的最后一个元素,我该如何使用它?
      【解决方案3】:
      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 个这样的插入语句.我想现在你会明白的

      【讨论】:

        猜你喜欢
        • 2014-09-09
        • 2014-09-11
        • 2018-06-27
        • 1970-01-01
        • 2021-09-18
        • 2015-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多