2016-01-05 17 views
0

我想直接編輯SD卡中現有的.db文件。根據this,使用以下代碼,可以將該數據庫複製到/data/data/PACKAGE_NAME/databases/然後進行編輯,但我想在SD卡本身中進行編輯。直接編輯SD卡中存在的數據庫

public void openDataBase() throws SQLException{ 
String myPath = DB_PATH + DB_NAME; 
myDB = SQLiteDatabase.openDatabase(myPath, null,SQLiteDatabase.OPEN_READWRITE); 

這可能嗎?

+0

那麼如果你調用'myDB.query' /'myDB.insert' /'myDB.delete'等等會發生什麼? – pskink

+0

之前的問題是....使用'SQLiteOpenHelper',我不知道如何防止在'/ data/data/PACKAGE_NAME/databases'中創建myDB並打開現有的.db文件並編輯它...我的意思是如何確定現有的.db文件的路徑,而不是定義一個新的.db文件並對其進行編輯...... – hamed

+0

什麼是「SQLiteOpenHelper」?你正在使用'SQLiteDatabase.openDatabase',而不是'SQLiteOpenHelper' – pskink

回答

0

感謝朋友......這就是答案:

第一ü應該定義數據庫文件是這樣的:

SQLiteDatabase myDB; 

然後,例如用於插入:

myDB = SQLiteDatabase.openDatabase("/sdcard/mydb.db", null, SQLiteDatabase.OPEN_READWRITE); 

     ContentValues cv1 = new ContentValues(); 
     cv1.put("Field1", "new Field"); 
     cv1.put("Field2", "other Field"); 
     myDB.insert("TABLE_NAME", null, cv1); 

或更新使用此:

  myDB.update("TABLE_NAME", cv1, "_id=" + 1, null); 
0

http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

有了這個,你可以讀/寫應用程式的內部存儲...是一個數據庫文件或沒有。或者,您可以打開/讀取內部數據庫中的數據,然後系統地將其複製到外部存儲上的新數據庫中。

這很乏味,但它使您有機會'擦洗'您可能不想共享的任何'私人'信息的數據庫。

和「單調乏味」並不完全正確,您只需要重新創建每個表格,然後讀取每個表格並將該數據插入到新的數據庫中。

+0

爲什麼不能將文件從'/ sdcard/mydb.db'複製到'/ data/data/PACKAGE_NAME/databases/mydb.db'? – pskink

+0

你知道嗎......我很抱歉,我在想讀'另一個'應用程序的內部存儲器......(這需要紮根你的設備...)編輯上述 – mawalker

+0

謝謝...但不是我的問題...我想直接編輯SDCard中的現有數據庫....使用像插入(),更新(),刪除( )....我試過這個示例,它可以在'/ data/data/PACKAGE_NAME/databases'中創建一個數據庫文件,但是不能將數據複製到它... – hamed