SQLite数据库android

时间:2016-12-18 02:45:18

标签: android sqlite android-sqlite

我正在创建一个笔记应用程序,我在其中添加了笔记标题,详细信息和时间。我在我的帮助器类oncreate方法中执行以下查询。

dbhelper类

String sql = "CREATE TABLE "+TABLE_NAME+"("+ Col1_ID + " INTEGER PRIMARY KEY AUTOINCREMENT" +","+
            Col2_TITLE+" TEXT" + ","+
            Col3_NOTE+ " TEXT" + ","+
            Col4_TIME+ " TEXT"+
            ")";
    sqLiteDatabase.execSQL(sql);

我在helper类中创建getInfomration方法来返回我可以在main活动中使用的游标对象来检索值并保存注释我addNote方法。

  public Cursor getInformation(SQLiteDatabase sqLiteDatabase){
    String[] projections = {Col1_ID, Col2_TITLE, Col3_NOTE, Col4_TIME};
    cursor = sqLiteDatabase.query(TABLE_NAME, projections, null, null, null, null, null);
    return cursor;
}
public void addNote(String title, String note, String time, SQLiteDatabase sqLiteDatabase) {
    ContentValues contentValues = new ContentValues();
    contentValues.put(Col2_TITLE, title);
    contentValues.put(Col3_NOTE, note);
    contentValues.put(Col4_TIME, time);
    sqLiteDatabase.insert(TABLE_NAME, null, contentValues);
    sqLiteDatabase.close();
}

在我的主要活动中,我在回收站视图中检索笔记标题和时间以及显示列表,我也想知道每个项目的ID,以便我可以使用ID更新相应的笔记项目。但我总是得到0作为所有项目的笔记ID。

sqLiteDatabase = noteDBHelper.getReadableDatabase();
    cursor = noteDBHelper.getInformation(sqLiteDatabase);

    noteLists = new ArrayList<>();

    if(cursor.moveToFirst()){
        do{
            noteObject = new NoteItem() ;
            log.d(tag, cursor.getInt(0)+"");//0 always for all the elements.
            //all elements below are well retrieved
            noteObject.setTitle(cursor.getString(1));
            noteObject.setTime(cursor.getString(3));
            noteObject.setDetails(cursor.getString(2));
            noteLists.add(noteObject);
        }while(cursor.moveToNext());
    }

    noteAdapter = new NoteAdapter(noteLists);
    recyclerView.setAdapter(noteAdapter);

请告诉我为什么我无法从数据库中检索ID值?它是否通过添加注释方法自动创建?

0 个答案:

没有答案