2016-10-20 112 views
1

我想从设备上删除SQLite数据库。我试图删除它,但没有删除,因为我可以看到数据库的旧记录。如何删除SQLite数据库android?

试图删除这样的:

 deleteDatabase(Constants.DATABASE_NAME); 

      DatabaseHelper db = new DatabaseHelper(this); 
      db.createDatabase(); 

常量:

public class Constants { 

    public static final int DATABASE_VERSION = 12; 
    public static final String DATABASE_NAME = "contactsApp"; 
} 

DatabaseHelper:

public class DatabaseHelper extends SQLiteOpenHelper { 

    private static final String USER_TABLE = "userTable"; 
    private static final String KEY_USER_NAME = "userName"; 
    private static final String KEY_EMAIL_ID = "emailId"; 
    private static final String KEY_MOBILE_NO = "mobileNo"; 
    private static final String KEY_PROFILE_IMAGE = "profileImage"; 
    private static final String KEY_FULL_NAME = "fullName"; 
    private static final String KEY_DEVICE_ID = "deviceId"; 
    private static final String KEY_PASSWORD ="password"; 
    private static final String KEY_USER_ID = "userId"; 
    private static final String KEY_JOB_TITLE = "jobTitle"; 
    private static final String KEY_WORK_ADDRESS = "workAddress"; 
    private static final String KEY_WORK_PHONE = "workPhone"; 
    private static final String KEY_HOME_ADDRESS = "homeAddress"; 


    private static final String CONTACT_TABLE = "contactTable"; 
    private static final String KEY_CONTACT_NAME = "contactName"; 
    private static final String KEY_CONTACT_EMAIL_ID = "contactEmailId"; 
    private static final String KEY_CONTACT_MOBILE_NO = "contactMobileNo"; 
    private static final String KEY_CONTACT_PROFILE_IMAGE = "contactProfileImage"; 
    private static final String KEY_CONTACT_ID = "contactId"; 
    private static final String KEY_CONTACT_FULL_NAME = "fullName"; 
    private static final String KEY_CONTACT_JOB_TITLE = "jobTitle"; 
    private static final String KEY_CONTACT_WORK_ADDRESS = "workAddress"; 
    private static final String KEY_CONTACT_WORK_PHONE = "workPhone"; 
    private static final String KEY_CONTACT_HOME_ADDRESS = "homeAddress"; 

    private Context context; 

    public DatabaseHelper(Context context) { 
     super(context, Constants.DATABASE_NAME, null, Constants.DATABASE_VERSION); 
     //3rd argument to be passed is CursorFactory instance 
     this.context = context; 
    } 

    // Creating Tables 
    @Override 
    public void onCreate(SQLiteDatabase db) { 

     createTable(db); 

    } 

    public void createDatabase(){ 
     context.deleteDatabase(Constants.DATABASE_NAME + ".db"); 
     SQLiteDatabase db = this.getReadableDatabase(); 
    } 


    public void createTable(SQLiteDatabase db){ 
     String CREATE_USER_TABLE = "CREATE TABLE " + USER_TABLE + "(" 
       + KEY_USER_ID + " TEXT," 
       + KEY_USER_NAME + " TEXT," 
       + KEY_PASSWORD + " TEXT," 
       + KEY_MOBILE_NO + " TEXT," 
       + KEY_EMAIL_ID + " TEXT," 
       + KEY_PROFILE_IMAGE + " TEXT," 
       + KEY_FULL_NAME + " TEXT," 
       + KEY_DEVICE_ID + " TEXT," 
       + KEY_JOB_TITLE + " TEXT," 
       + KEY_HOME_ADDRESS + " TEXT," 
       + KEY_WORK_ADDRESS + " TEXT," 
       + KEY_WORK_PHONE + " TEXT " + ")"; 

     db.execSQL(CREATE_USER_TABLE); 

     String CREATE_CONTACT_TABLE = "CREATE TABLE " + CONTACT_TABLE + "(" 
       + KEY_CONTACT_ID + " TEXT," 
       + KEY_CONTACT_NAME + " TEXT," 
       + KEY_CONTACT_MOBILE_NO + " TEXT," 
       + KEY_CONTACT_EMAIL_ID + " TEXT," 
       + KEY_CONTACT_PROFILE_IMAGE + " TEXT," 
       + KEY_CONTACT_FULL_NAME + " TEXT," 
       + KEY_CONTACT_JOB_TITLE+ " TEXT," 
       + KEY_CONTACT_WORK_ADDRESS + " TEXT," 
       + KEY_CONTACT_WORK_PHONE + " TEXT," 
       + KEY_CONTACT_HOME_ADDRESS + " TEXT " + ")"; 

     db.execSQL(CREATE_CONTACT_TABLE); 

    } 

    // Upgrading database 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // Drop older table if existed 
     db.execSQL("DROP TABLE IF EXISTS " + USER_TABLE); 
     db.execSQL("DROP TABLE IF EXISTS " + CONTACT_TABLE); 

     context.deleteDatabase(Constants.DATABASE_NAME + ".db"); 

     createTable(db); 

    } 

} 

我也试着只删除表,但它没有得到删除。

可能是什么问题?任何人都可以帮忙吗?谢谢..

+0

怎么样:http://stackoverflow.com/questions/5326918 /如何删除数据库在sqlite –

+0

你的删除方法在哪里? – vidulaJ

回答

0

请确保在删除之前关闭所有数据库连接。否则,你就必须重新启动应用程序,查看更改

+0

如果我正在重新启动应用程序,我仍然无法看到更改。 @Anto – Sid

+0

您是否确定在删除之前关闭所有与数据库的连接? – HelloSadness

2
String myPath = DB_PATH + DB_NAME; 
SQLiteDatabase.deleteDatabase(new File(myPath)); 

OR

context.deleteDatabase(DATABASE_NAME); 

更多细节.. How to delete SQLite database from Android programmatically

+0

我尝试使用context.deleteDatabase(DATABASE_NAME);但仍然没有被删除。 @Nikhil Boras – Sid

+0

onUpgrade方法将最后两行切换到最下面..删除后,创建一个新的。 –

+0

如果我交换,它将如何创建新的数据库? @Nikhil Borad – Sid