我正在创建一个笔记应用程序,我在其中添加了笔记标题,详细信息和时间。我在我的帮助器类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值?它是否通过添加注释方法自动创建?