如果SQLite中的列为空,则显示“无标题”
来源:爱站网时间:2021-09-16编辑:网友分享
我制作了一个记事应用,我给用户提供了一个选项,可以将其记事标题留空。但是在RecyclerView和工具栏中显示了标题,在这种情况下为空。我试图给该列赋值...
问题描述
我制作了一个记事应用,我给用户提供了一个选项,可以将其记事标题留空。但是在RecyclerView和工具栏中显示了标题,在这种情况下为空。我尝试在创建表时为该列提供值,但是它不起作用。
这是创建表的代码:
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE " + DATABASE_TABLE + "(" +
ID + " INTEGER PRIMARY KEY," +
TITLE + " TEXT DEFAULT 'No Title'," +
CONTENT + " TEXT," +
DATE + " TEXT," +
TIME + " TEXT" + ")";
db.execSQL(query);
}
UPDATE:
保存注释时的方法:
private void saveNote() {
if (TextUtils.isEmpty(title.getText()) && TextUtils.isEmpty(content.getText())) {
Toast.makeText(this, "Please write Something in your note", Toast.LENGTH_SHORT).show();
} else {
NotePad notePad = new NotePad(title.getText().toString(), content.getText().toString(), currentDate, currentTime);
Database database = new Database(this);
database.addNote(notePad);
Toast.makeText(this, "Note Saved!", Toast.LENGTH_LONG).show();
moveToList();
}
}
在数据库中添加注释方法:
void addNote(NotePad notePad) {
SQLiteDatabase database = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(TITLE, notePad.getTitle());
cv.put(CONTENT, notePad.getContent());
cv.put(DATE, notePad.getDate());
cv.put(TIME, notePad.getTime());
database.insert(DATABASE_TABLE, null, cv);
}
解决方法:
在方法addNote()
中,您应该not在ContentValues
对象中为TITLE
设置一个值,如果它为空,那么SQLite会将列的值设置为默认值:
void addNote(NotePad notePad) {
SQLiteDatabase database = this.getWritableDatabase();
cv = new ContentValues();
if (!TextUtils.isEmpty(notePad.getTitle())) cv.put(TITLE, notePad.getTitle());
cv.put(CONTENT, notePad.getContent());
cv.put(DATE, notePad.getDate());
cv.put(TIME, notePad.getTime());
database.insert(DATABASE_TABLE, null, cv);
}
上一篇:DAO包结构