Java 无法在Android上打开sqlite数据库

Java 无法在Android上打开sqlite数据库,java,android,sqlite,android-database,Java,Android,Sqlite,Android Database,我无法在我的新安卓应用程序上打开Sqlite3数据库。为了解决这个问题,我创建了一个全新的应用程序。我将sqlite3db放在main下的Assets文件夹中 在清单中,我放置了以下行: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE

我无法在我的新安卓应用程序上打开
Sqlite3
数据库。为了解决这个问题,我创建了一个全新的应用程序。我将sqlite3db放在main下的
Assets
文件夹中

在清单中,我放置了以下行:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
以下是日志中的相关错误:

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
调用中获取了一个有效路径,但似乎表明该文件不存在。

如果您读取日志,它确实会获取路径,但除非您将数据库显式复制到应用程序的专用数据文件夹中,否则无法打开该文件

还值得一提的是,资产是只读的,因此即使它可以打开数据库,您也只能使用SELECT语句


请参阅:

文件存在,但格式不正确<代码>无法在第行打开文件。。。它是加密的吗?你试过这个库吗?不,没有加密。可以肯定的是,我实际上使用了一份我在另一个项目中积极使用的文件副本。也就是说,我使用复制粘贴将其放在IDE的资产文件夹中,而不是将其移动到本机文件系统中。当我这么做的时候,我得到一条信息,它不是UTF-8文件,这并不奇怪,因为它不是文本。但是有没有更好的方法将文件移动到资产中?你可以将其放入资产文件夹中,但数据库文件最终需要移动/复制到应用程序的私有数据中,我认为@cricket_007。。。就这样。我完全忘记了那一步。我复制了我的dbhelper类,在Main中添加了复制数据库的行,瞧。如果你想把它作为一个答案,很高兴为你接受它。
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