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