java - 如果不在数据库中,Android Studio SQLite 会保存标题吗?

标签 java android database sqlite

你好,我正在制作一个简单的笔记应用程序,使用 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 数据库.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

最佳答案

将表创建更改为:-

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

卸载应用程序,或删除应用程序的数据,或增加数据库版本号并重新运行应用程序。不会添加行 UNIQUE 约束冲突(同名)(插入方法有效使用INSERT OR IGNORE)。

关于java - 如果不在数据库中,Android Studio SQLite 会保存标题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55231397/

相关文章:

java - 接收多部分表单数据 - Jersey 1.19.1 REST

java - 如何存储文件并将其引用到java Web应用程序?

java - 来 self 的自定义 servlet 的 Kerberos 身份验证?

java - 使用许多 AsyncTasks 会使我的 Android 应用程序运行得更快吗?

android - 动态更改 colors.xml 的值以更改 android 应用程序的外观

java - 如何让高分榜与用户保持联系?

database - Azure SQL 数据库中的自动调整是否会重新组织和重建索引?

php - 使用不同的列名插入到 mysql 和 postgresql

c# - 存储库模式以及如何管理实体之间的依赖关系

android - 试用版应用程序的时间限制