Android Studio SQLite сохранить заголовок, если не в базе данных? - PullRequest
1 голос
/ 19 марта 2019

Здравствуйте. Я делаю простое приложение для заметок, использующее базу данных SQLite, использующее специальный адаптер массива, в котором пользователь может сохранить заметку с заголовком, описательным текстом и датой. Все работает, но я хочу, чтобы пользователи могли сохранять новую заметку, только если ее заголовок отсутствует в базе данных. Как я могу это сделать?

Вот примечание для редактирования

public class Edit_notes extends AppCompatActivity {

    private DBOpenHelper dbop;
    private SQLiteDatabase sdb;
    private EditText title_text;
    private EditText note_text;


    public boolean SaveNote(){

        String note_title_string = title_text.getText().toString();
        String note_text_string = note_text.getText().toString();

        if (!note_title_string.isEmpty()){
            if(!note_text_string.isEmpty()) {

// Need to check if title is not in the database then insert else don't

                String date = new Date().getDate() + "/" + (new Date().getMonth() + 1) + "/" + (new Date().getYear() + 1900);
                AddData(note_title_string, note_text_string, date); // Add title to the database
                Toast.makeText(this, "Note saved", Toast.LENGTH_SHORT).show();
                finish();
            }
            else {
                Toast.makeText(this, "Note text cannot be empty", Toast.LENGTH_SHORT).show();
            }

        }
        else{
            Toast.makeText(this, "Title cannot be empty", Toast.LENGTH_SHORT).show();
        }

        return true;
    }

    public void AddData(String title_entry, String text_entry, String date){

        dbop = new DBOpenHelper(this);
        sdb = dbop.getWritableDatabase();

        ContentValues cv = new ContentValues();
        cv.put("TITLE", title_entry);
        cv.put("TEXT", text_entry);
        cv.put("DATE", date);

        sdb.insert("note_table", null, cv);
    }

}

SQLite database.java:

public class DBOpenHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "notes.db";
public static final String TABLE_NAME = "note_table";
public static final String ID_COLUMN = "ID";
public static final String TITLE_COLUMN = "TITLE";
public static final String TEXT_COLUMN = "TEXT";
public static final String DATE_COLUMN = "DATE";

SQLiteDatabase db = this.getWritableDatabase();


public DBOpenHelper(Context context) {
    super(context, DATABASE_NAME, null, 5);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String createTable = "CREATE TABLE " + TABLE_NAME
            + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " + " TITLE TEXT, " + " TEXT TEXT, " + " DATE STRING)";
    db.execSQL(createTable);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("drop table note_table");
    onCreate(db);
}

}

Полагаю, нет необходимости указывать mainactivity.java

1 Ответ

1 голос
/ 19 марта 2019

Изменить таблицу Создать: -

String createTable = "CREATE TABLE " + TABLE_NAME
        + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " + " TITLE TEXT UNIQUE, " + " TEXT TEXT, " + " DATE STRING)";

Удалите приложение, или удалите данные приложения, или увеличьте номер версии базы данных и перезапустите приложение.Строка не будет добавлена. УНИКАЛЬНЫЙ конфликт ограничений (тот же заголовок) (метод вставки эффективно использует INSERT OR IGNORE).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...