繁体   English   中英

无法在Android中创建sqlite数据库

[英]unable to create sqlite database in Android

我有类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); 在主要活动中,它工作,并创建数据库。 所以请帮助,以便我可以在后台线程中创建数据库。

但是当我运行CreateDB dbhelp = new CreateDB(this); 在主要活动中,它工作,并创建数据库

因为您忘记在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;
}

然后在你的活动中:

new manager(this).execute();

还要尝试尊重名称约定。

您需要将有效上下文作为参数传递:

CreateDB dbhelp = new CreateDB(getContext());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM