حذف کردن ردیف هایی از یک جدول (table) موجود در یک پایگاه داده (SQLite Database)، بر اساس مقدار یک ستون (column) خاص، در برنامه نویسی اندروید
فرض کنید که با کدهای زیر، قبلا یک پایگاه داده (SQLite Database) با نام KELIDESTAN.db و یک جدول (table) با نام MY_TABLE برای آن پایگاه داده، ساخته ایم و همچنین سه ردیف اطلاعات را در آن ذخیره کرده ایم :
String TABLE_NAME = "MY_TABLE";
try{
SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,null);
mydb.execSQL("CREATE TABLE IF NOT EXISTS "+ TABLE_NAME +" (ID INTEGER PRIMARY KEY, NAME TEXT, CITY TEXT);");
mydb.execSQL("INSERT INTO " + TABLE_NAME + " (NAME, CITY) VALUES ('ALIREZA','SHIRAZ')");
mydb.execSQL("INSERT INTO " + TABLE_NAME + " (NAME, CITY) VALUES ('HAMID','TEHRAN')");
mydb.execSQL("INSERT INTO " + TABLE_NAME + " (NAME, CITY) VALUES ('HASAN','GHOM')");
mydb.close();
}catch(Exception e){
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show();
}
اکنون می خواهیم ردیف هایی که در آنها، ستون CITY برابر SHIRAZ است، حذف شوند، برای این منظور، کدهای زیر را می نویسیم :
String TABLE_NAME = "MY_TABLE";
try{
SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,null);
mydb.execSQL("DELETE FROM " + TABLE_NAME + " WHERE CITY = 'SHIRAZ'");
mydb.close();
}catch(Exception e){
Toast.makeText(getApplicationContext(), "Error encountered while deleting.", Toast.LENGTH_LONG).show();
}
همان طور که می دانید، روش execSQL ، یک عبارت دستوری را دریافت می کند و سپس بر اساس آن، پایگاه داده و جدول ها را تغییر خواهد داد. اگر مقدار مربوط به TABLE_NAME در عبارت دستوری نوشته شده درون پرانتز روش execSQL را در عبارت دستوری، جایگزین کنیم، آنگاه عبارت دستوری به صورت زیر می باشد :
عبارت دستوری فوق، تعیین کرده است که درون جدول با نام MY_TABLE ، هر ردیفی که در آن، مقدار ستون با نام CITY برابر با SHIRAZ است، آن ردیف جدول، حذف شود.