gpt4 book ai didi

android - SQLiteDiskIOException : disk I/O error when creating database

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:19 25 4
gpt4 key购买 nike

我正在使用这段代码在 android 中创建一个数据库:

public class PackageDBHelper extends SQLiteOpenHelper{

//The Android's default system path of your application database.
private static String DB_PATH = "/data/data/com.myapp/databases/";

private static String DB_NAME = "my_db.db";

public SQLiteDatabase db;

private final Context myContext;

public PackageDBHelper(Context context) {

super(context, DB_NAME, null, 1);
this.myContext = context;
}
public void createDataBase() throws IOException{

boolean dbExist = checkDataBase();

if(dbExist){
//do nothing - database already exist
}else{

//By calling this method and empty database will be created into the default system path
//of your application so we are gonna be able to overwrite that database with our database.
this.getReadableDatabase(); //error occurs here

try {

copyDataBase();

} catch (IOException e) {

throw new Error("Error copying database");

}
}

}

堆栈跟踪:

android.database.sqlite.SQLiteDiskIOException: disk I/O error
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1668)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1684)
at android.app.ActivityThread.access$1500(ActivityThread.java:124)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:948)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3717)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteDiskIOException: disk I/O error
at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1849)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:197)
at com.myapp.util.PackageDBHelper.createDataBase(PackageDBHelper.java:51)

此应用已上市,我收到了一些错误报告。我无法在我的任何设备上复制它,而且错误相对较少。我意识到应该从设备中检索 DB_PATH,但这不应该影响对 getReadableDatabase() 的调用。

有什么想法吗?

最佳答案

我在 HTC Desire HD 和 Android 2.1 上的 Galaxy S 上遇到了同样的问题

使用以下 DB_PATH 似乎可以解决问题:

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

此处提供更多详细信息 https://stackoverflow.com/a/4828540

关于android - SQLiteDiskIOException : disk I/O error when creating database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9808282/

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