Search code examples
androidandroid-sqlite

in single addition my SQLite app showing double result


Java

I added data one time in database but it shows 2 time same data in database and it s main problem there id no problem in my code. I think there is problem in insertion of code or may be it caused by version used by me. I don't know where is problem it is my first project on SQLite and I am a beginner in SQlite

Context context;
private static final String DatabaseName = "MyNotes";
private static final int DatabaseVersion = 1;

private static final String TableName = "myNotes";
private static final String ColumnId = "id";
private static final String ColumnTitle = "title";
private static final String ColumnDescription = "description";

public Database(@Nullable Context context) {
    super(context, DatabaseName, null ,DatabaseVersion );
    this.context = context;
}

@Override
public void onCreate(SQLiteDatabase db) {

    String query = "CREATE TABLE " + TableName + " (" + ColumnId + " INTEGER PRIMARY KEY 
                   AUTOINCREMENT, " + ColumnTitle + " TEXT, " + ColumnDescription + " TEXT);";
    db.execSQL(query);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    db.execSQL("DROP TABLE IF EXISTS " + TableName);
    onCreate(db);
}

void addNotes(String title, String Description){
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues contentValues = new ContentValues();
    contentValues.put(ColumnTitle,title);
    contentValues.put(ColumnDescription,Description);

    db.insert(TableName,null,contentValues);
    
    if (db.insert(TableName,null,contentValues) == -1){
        Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
    }
    else {
        Toast.makeText(context, " Data added Successfully " , Toast.LENGTH_SHORT).show();
       }
}

Cursor readAllNotes(){
    String query = "SELECT * FROM " + TableName;
    SQLiteDatabase database = this.getReadableDatabase();

    Cursor cursor = null;

    if (database != null)
      {
        cursor=database.rawQuery(query,null);
    }
    return cursor;
}

public void deleteAllnotes() {
    SQLiteDatabase database = this.getWritableDatabase();
    String query = "DELETE FROM " + TableName;
    database.execSQL(query);
}

Solution

  • Please review your code in your addNotes method.

    Seems like you have inserted data twice:

    void addNotes(String title, String Description) {
        SQLiteDatabase db = this.getWritableDatabase();
    
        ContentValues contentValues = new ContentValues();
        contentValues.put(ColumnTitle,title);
        contentValues.put(ColumnDescription,Description);
    
        //db.insert(TableName,null,contentValues);
        
        if (db.insert(TableName,null,contentValues) == -1) {
            Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(context, " Data added Successfully " , Toast.LENGTH_SHORT).show();
        }
    }