0
我無法在我的新Android應用程序上打開Sqlite3
數據庫。爲了解決問題,我創建了一個全新的應用程序。我把sqlite3數據庫放在Assets
文件夾下。無法在Android上打開sqlite數據庫
在清單中,我放入下列行:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
我在該試驗中應用只是一個活動,並且這是在該活動的代碼。它只做一件事:attempts to open the db
。它立刻死亡,並打印出一個錯誤控制檯(細節下文)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Context context = getApplicationContext();
String db_path = String.valueOf(context.getDatabasePath("production.sqlite3"));
SQLiteDatabase db = SQLiteDatabase.openDatabase(db_path, null, SQLiteDatabase.OPEN_READWRITE);
}
}
下面是從日誌相關的錯誤:
09-09 20:10:54.788 9850-9850/? E/SQLiteLog: (14) cannot open file at line 31278 of [2ef4f3a5b1]
09-09 20:10:54.788 9850-9850/? E/SQLiteLog: (14) os_unix.c:31278: (2) open(/data/user/0/com.hawthornemackenzie.sesame/databases/production.sqlite3) -
09-09 20:10:54.788 9850-9850/? E/SQLiteDatabase: Failed to open database '/data/user/0/com.hawthornemackenzie.sesame/databases/production.sqlite3'.
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
這似乎是從getDatabasePath
得到一個有效的路徑通話,但似乎是說該文件不存在。
該文件存在,但畸形...'無法打開文件在line' ...是加密的? –
你有試過這個圖書館嗎? https://github.com/jgilfelt/android-sqlite-asset-helper –
不,沒有加密。可以肯定的是,我實際上使用了一個我在另一個項目中積極使用的文件副本。也就是說,我使用複製粘貼將其放入IDE的資產文件夾中,並將其移到本機文件系統中。當我這樣做時,我收到一條消息,說它不是一個UTF-8文件,這並不奇怪,因爲它不是文本。但是有沒有更好的方法將文件轉移到資產中? – hawmack13