我创建了一个类调用
DatabaseHandler来扩展sqliteOpenHelper.我想解释删除的数据库或表上的按钮点击.我必须传递给调用方法的参数是什么?以下是代码供参考:
public class DatabaseHandler extends sqliteOpenHelper { // All Static variables // Database Version public static final int DATABASE_VERSION =1; // Database Name public static final String DATABASE_NAME = "EmployeeDB"; // Contacts table name public static final String TABLE_CONTACTS = "contacts"; // Contacts Table Columns names private static final String KEY_ID = "id"; private static final String KEY_NAME = "name"; private static final String KEY_PH_NO = "phone_number"; public DatabaseHandler(Context context) { super(context,DATABASE_NAME,null,DATABASE_VERSION); } @Override public void onCreate(sqliteDatabase db) { // TODO Auto-generated method stub String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_PH_NO + " TEXT" + ")"; db.execsql(CREATE_CONTACTS_TABLE); } @Override public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) { // TODO Auto-generated method stub db.execsql("DROP TABLE IF EXISTS " + TABLE_CONTACTS); // Create tables again onCreate(db); } /** * All CRUD(Create,Read,Update,Delete) Operations */ // Adding new contact void addContact(Contact contact) { sqliteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME,contact.getName()); // Contact Name values.put(KEY_PH_NO,contact.getPhoneNumber()); // Contact Phone // Inserting Row db.insert(TABLE_CONTACTS,values); db.close(); // Closing database connection } // Getting single contact Contact getContact(int id) { sqliteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(TABLE_CONTACTS,new String[] { KEY_ID,KEY_NAME,KEY_PH_NO },KEY_ID + "=?",new String[] { String.valueOf(id) },null); if (cursor != null) cursor.moveToFirst(); Contact contact = new Contact(id,cursor.getString(1),cursor.getString(2)); // return contact return contact; } // Getting All Contacts public List<Contact> getAllContacts() { List<Contact> contactList = new ArrayList<Contact>(); // Select All Query String selectQuery = "SELECT * FROM " + TABLE_CONTACTS; sqliteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(selectQuery,null); // looping through all rows and adding to list if (cursor.moveToFirst()) { do { Contact contact = new Contact(); contact.setID(Integer.parseInt(cursor.getString(0))); contact.setName(cursor.getString(1)); contact.setPhoneNumber(cursor.getString(2)); // Adding contact to list contactList.add(contact); } while (cursor.moveToNext()); } // return contact list return contactList; } // Updating single contact public int updateContact(Contact contact) { sqliteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME,contact.getName()); values.put(KEY_PH_NO,contact.getPhoneNumber()); // updating row return db.update(TABLE_CONTACTS,values,KEY_ID + " = ?",new String[] { String.valueOf(contact.getID()) }); } // Deleting single contact public void deleteContact(Contact contact) { sqliteDatabase db = this.getWritableDatabase(); db.delete(TABLE_CONTACTS,new String[] { String.valueOf(contact.getID()) }); db.close(); } // Getting contacts Count public int getContactsCount() { String countQuery = "SELECT * FROM " + TABLE_CONTACTS; sqliteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(countQuery,null); cursor.close(); // return count return cursor.getCount(); } public void DeleteDatabase(sqliteDatabase db,String table) { db.execsql("DELETE FROM " + table); db.close(); } }
解决方法
@H_502_7@ 很难回答没有更多的上下文,但最终的sqlite查询将是:db.execsql("DROP TABLE IF EXISTS tablename");
其中db是对sqliteDatabase对象的引用.
context.deleteDatabase(DATABASE_NAME);