成功创建了database,而且能成功insert第一行。
问题来了,从第二行开始,每一次添加都会创建了一行新的数据,然后用这些数据覆盖了以前的数据。
例子:
第一次添加有一行:id:1 name:pad age:11
第二次添加有两行: id:2 name:abc age:20
                  id:2 name:abc age:20
我已经在创建表的时候id设置为integer primary key autoincrement not null为什么会这样呢?
一下是我调用insert的代码
private static DBAdapter AssistentsDBAdapter;
if(AssistentsDBAdapter.insertItem(category, description, priority, stime, etime)==-1){
RString += "\nInsertion Error";
}else{
RString += "\nInsertion Success";
}
下面是我的DBAdapter insert部分代码以及类借口:
public DBAdapter(Context ctx,String TableName){
this.DATABASE_TABLE = TableName;
this.context=ctx;
DBHelper=new DatabaseHelper(context);
}
public long insertItem(String category, String description, int priority, String stime, String etime){
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_category, category);
initialValues.put(KEY_DESCRIPTION, description);
initialValues.put(KEY_PRIORITY, priority);
initialValues.put(KEY_STIME, stime);
initialValues.put(KEY_ETIME, etime);
return db.insert(DATABASE_TABLE, null, initialValues);
}

解决方案 »

  1.   

    你添加的第二条想覆盖第一条的话,应该不是insert,需要updata
      

  2.   

    默认的id字段 Android要统一用 “_id”  你换成这个试试 
      

  3.   

    下面是我创建表单的语句
    private static final String DATABASE_CREATE =
    "create table " + DATABASE_TABLE + "(_id integer primary key autoincrement not null, "
    + "category text not null, description text, "
    + "priority int not null,"
    + "stime text not null," + "etime text not null);";
    以及SQLiteOpenHelper的借口
    private static class DatabaseHelper extends SQLiteOpenHelper{
    DatabaseHelper(Context context){
    super(context,DATABASE_NAME,null,DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db){
    db.execSQL(DATABASE_CREATE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
    Log.w(TAG, "Upgrading database from version " + oldVersion + "to" + newVersion + ", which will destroy all old data");
    db.execSQL("DROP TABLE IF EXISTS"+DATABASE_TABLE);
    onCreate(db);
    }
    }
      

  4.   

    已经解决,原来是显示的问题
    if(c.moveToFirst()){

             do{
             map = new HashMap<String,String>();//改成map.clear()不能正常工作
             map.put("ID", c.getString(0));
             map.put("CATEGORY", c.getString(1));
             map.put("DESCRIPTION",c.getString(2));
             map.put("PRIORITY", c.getString(3));
             map.put("STIME", c.getString(4));
             map.put("ETIME", c.getString(5));
             list.add(map);
             }while(c.moveToNext());
            }