gpt4 book ai didi

java - 无法在 Android 中创建 sqlite 数据库

转载 作者:行者123 更新时间:2023-12-02 06:36:26 24 4
gpt4 key购买 nike

我有 CreateDB 类

public class CreateDB extends SQLiteOpenHelper{   // SQLiteOpenHelper auto create if db not exists.

private static final int DB_VERSION = 1;
private static final String DB_NAME = "mydb.db";

public CreateDB(Context ctx) {
super(ctx, DB_NAME, null, DB_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE friends (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, phonenumber INTEGER);");
}}

我在另一个类中调用createdb作为后台线程

public class manager extends AsyncTask<Void, Void, String> {

public Context context;

@Override
protected String doInBackground(Void... params) {

CreateDB dbhelp = new CreateDB(context);
}

}

当我运行它时,它停止工作并且模拟器给出应用程序停止响应的错误

但是当我运行 `CreateDB dbhelp = new CreateDB(this); 时在主要 Activity 中,它可以工作并创建数据库。所以请帮忙,以便我可以在后台线程中创建数据库。

最佳答案

but when i run CreateDB dbhelp = new CreateDB(this); in main activity then it works and database is created

因为您忘记在 AsyncTask 中初始化 context 对象。

public class manager extends AsyncTask<Void, Void, String> {

public Context context; <-- Declared but not initialized

@Override
protected String doInBackground(Void... params) {

CreateDB dbhelp = new CreateDB(context);
}

您可以为 AsyncTask 创建一个构造函数:

public manager(Context context) {
this.context = context;
}

然后在您的 Activity 中:

new manager(this).execute();

还要尽量尊重名称约定。

关于java - 无法在 Android 中创建 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19605294/

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