使用ContentValues存储的值的顺序不正确,为什么?

时间:2010-07-17 20:05:05

标签: android database sqlite

目前我正在开发我的第一款Android应用,但遇到了一些我无法解决的问题。当我尝试将数据插入到我自己的数据库中时出现错误:07-18 03:41:04.414:ERROR / AndroidRuntime(3480):java.lang.NullPointerException

我插入表格的代码是:

public long createRecord(String created_time, String modified_time,
        long reading, String unit, String period, String remark) {

    ContentValues values = new ContentValues(6);
    values.put(KEY_CREATED_TIME, created_time);
    values.put(KEY_MODIFIED_TIME, modified_time); //System.out.println(values);
    values.put(KEY_RECORD, reading); //System.out.println(values);
    values.put(KEY_UNIT, unit); //System.out.println(values);
    values.put(KEY_PERIOD, period);// System.out.println(values);
    values.put(KEY_REMARK, remark); 

    System.out.println(values);
    return mDb.insert(DATABASE_TABLE, null , values);

}

这是我的Adapter类,它是我的DatabaseHelper类的一个实例。对于我的DatabaseHelper类,我可以将创建的数据库从assets文件夹复制到系统数据库文件夹中。但是只是无法将数据创建到表中,我试图打印出“值”,它表明:

created_time = 2010-07-18 03:41:04 remark = on unit = mg / dL reading = 67 period = Before Meal modified_time = 00:00:00 这不是它应该的方式,所以我猜这可能是问题所在。 谁能帮我这个?在线搜索但没有这么多的信息。在此先感谢:)

3 个答案:

答案 0 :(得分:0)

订单未被保留的原因是ContentValuesHashMap支持。那没关系。
问题可能是mDb null造成的(System.out.println("" + mDb);检查)。

答案 1 :(得分:0)

if(db!=null){
         ContentValues row = new ContentValues();
         row.put("rt_id",tid);
         row.put("rs_id", sid);
         row.put("rsubject", rsubject);
         row.put("rdescr",rdescr);
         row.put("day", day);
         row.put("month",month);
         row.put("year",year);
         row.put("stamp", stamp);
         row.put("amount",amount);

         long chk = db.insert("records",null, row);

         if(chk!=0){
             Toast.makeText(myContext, "Record added successfully",Toast.LENGTH_LONG).show(); 
         }else{
             Toast.makeText(myContext, "Record added failed...! ",Toast.LENGTH_LONG).show();
         }
       }else{
           Toast.makeText(myContext, "could Not connected database..!!! ",Toast.LENGTH_LONG).show(); 
       }
     }catch(SQLiteException exc){
         Toast.makeText(myContext, "Record could not saved...!!! ",Toast.LENGTH_LONG).show();
     }finally{
         db.close();
         }

您可以检查您的数据库对象是否为空...或者仅通过打印它来检查它......一切顺利。

答案 2 :(得分:-1)

您是否看过sqliteDatabase的源代码?它创建了一个sql并处理它。但订单基于:

   Set<Map.Entry<String, Object>> entrySet = null;
    if (initialValues != null && initialValues.size() > 0) {
        entrySet = initialValues.valueSet();
        Iterator<Map.Entry<String, Object>> entriesIter = entrySet.iterator();

我觉得它有问题吗?或许多值时订单会出错。你找到了什么