新しいAndroidアプリでSqlite3
データベースを開くことができません。問題を特定するために、私は新しいアプリを作りました。私は、メインの下のAssets
フォルダにsqlite3 dbを配置しました。マニフェストに Androidでsqliteデータベースを開くことができません
は、私は、次の行を配置:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
私はこのテストアプリでただ一つの活性を有し、これはその活性のコードです。それはちょうど1つのことをします:attempts to open the db
。
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
から有効なパスを取得しているようだ:それはすぐに死に、コンソールにエラーを出力します(下記詳細)ここで
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);
}
}
は、ログから該当するエラーですファイルが存在しないと言っているようです。
ファイルが存在しますが、不正な形式です... 'ができないファイルを開いてline'で...それは暗号化されていますか? –
このライブラリを試しましたか? https://github.com/jgilfelt/android-sqlite-asset-helper –
いいえ、暗号化されていません。確かに、私は実際に別のプロジェクトで積極的に使用するファイルのコピーを使用しました。つまり、コピーペーストを使用してIDEのアセットフォルダに入れ、ネイティブファイルシステム内で移動させました。私がそれをしたとき、私はUTF-8ファイルではないというメッセージを得ました。これはテキストではないので驚くべきことではありません。しかし、ファイルを資産に移動するより良い方法はありますか? – hawmack13