如果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()中,您应该notContentValues对象中为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包结构

下一篇:如何从相同类别的另一个对象上调用可变符

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载