gpt4 book ai didi

android - getReadableDatabase(),native_setLocale,SQLiteOpenHelper中的Android SQLiteDiskIOException

转载 作者:行者123 更新时间:2023-12-03 18:17:47 30 4
gpt4 key购买 nike

最近,我遇到了与使用SQLiteOpenHelper有关的问题。
很少有用户报告我无法重现的错误:

android.database.sqlite.SQLiteDiskIOException: disk I/O error
at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1987)
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1855)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:197)


我的实现是:

public class SqliteDatabase extends SQLiteOpenHelper
{
public SqliteDatabase(Context context, String dbName, int dbVersion)
{
super(context, dbName, null, dbVersion);
this.context = context;
this.dbName = dbName;
this.dbVersion = dbVersion;
}
(...)
}


所以这里没什么特别的。调用getReadableDatabase()后会引发异常,如在堆栈中可见。

请注意,此类由许多线程访问,但是访问是完全同步的(锁+仅一个,同一类实例)。可以将应用程序移至sdcard(也许是问题所在?)。

不幸的是,我不知道问题是在哪个设备/ Android版本上发生的(平台:Google Play控制台中的其他),但是在进行了一些谷歌搜索之后,我怀疑它是Android v2.2.1。

有任何想法吗?我知道这个问题很少见,但是我还没有找到解决方案...

最佳答案

SQLiteDiskIOException与同时多个访问相关
到您的数据库,一个线程尝试获取数据,而另一个线程
尝试同时插入数据。


但是有时候,如果您使用DB_PATH的以下命令获取“磁盘I / O错误”,似乎可以解决此问题:


Environment.getDataDirectory()+“ / data / YOUR_APP_PACKAGE / databases /”;


读这个:
Database handling stoped working on Android 2.2.1 (Desire HD 1.72.405.3)

关于android - getReadableDatabase(),native_setLocale,SQLiteOpenHelper中的Android SQLiteDiskIOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975513/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com