如何防止在 SQLite 数据库中保存空数据

How to prevent saving empty data in SQLite database

我不想在我的笔记应用程序中保存空数据。我已经尝试了一切,但是当我将 Edittexts 留空时,它仍然会将数据保存到我的数据库中。 我该怎么办?

这是我的 insertNote 方法

public boolean insertNote(Note note){

        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues contentValues = new ContentValues();
        contentValues.put(KEY_TITLE,note.getTitle());
        contentValues.put(KEY_DESCRIPTION,note.getDescription());
        contentValues.put(KEY_TIME,note.getTime());
        contentValues.put(KEY_DATE,note.getDate());

        long insert = db.insert(NoteDataBase.TABLE_NAME, null, contentValues);
        if (insert == -1){
            return false;
        }else {
            return true;
        }

    }

这是将我的笔记保存在我的 AddNoteActivity 中的方法

btn_save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Note note  = new Note();


                note.setTitle(edt_title.getText().toString());
                note.setDescription(edt_desc.getText().toString());
                note.setDate(date);
                note.setTime(time);

                noteDBAdapter = new NoteDBAdapter(getApplicationContext());
                boolean success = noteDBAdapter.insertNote(note);

                if (success == true){
                    Snackbar.make(v, R.string.snack_note2,Snackbar.LENGTH_LONG).show();
                }else {
                    Snackbar.make(v, R.string.snack_note,Snackbar.LENGTH_LONG).show();
                }

            }
        });

我也试过这个但是这个也不管用

btn_save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                if (edt_title.equals("") || edt_desc.equals("")){

                    Snackbar.make(v, R.string.snack_note2,Snackbar.LENGTH_LONG).show();
                }else {

                    Note note  = new Note();
                    note.setTitle(edt_title.getText().toString());
                    note.setDescription(edt_desc.getText().toString());
                    note.setDate(date);
                    note.setTime(time);

                    noteDBAdapter = new NoteDBAdapter(getApplicationContext());
                    noteDBAdapter.insertNote(note);
                }



            }
        });

感谢任何帮助...

您正在使用直接视图 edt_title.equals("") 而不是此 edt_title.getText().toString()。并使用 trim() 来消除像这样的前导和尾随空格。 edt_title.getText().toString().trim(). 之后检查值是否为空 TextUtils.isEmpty(string) 或者组合使用 TextUitls.isEmpty(edt_title.getText().toString().trim())

首先检查编辑文本是否为空白。使用 trim() 以及@Umesh 的建议。

 btn_save.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
    
                    if (edt_title.getText().toString().trim().equals("") || edt_desc.getText().toString().trim().equals("")){
    
                        Snackbar.make(v, R.string.snack_note2,Snackbar.LENGTH_LONG).show();
                    
                    } else {
    
                        Note note  = new Note();
                        note.setTitle(edt_title.getText().toString());
                        note.setDescription(edt_desc.getText().toString());
                        note.setDate(date);
                        note.setTime(time);
    
                        noteDBAdapter = new NoteDBAdapter(getApplicationContext());
                        noteDBAdapter.insertNote(note);
                    }
    
    
    
                }
            });