Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 打开数据库SQLite时出错_Android_Sqlite - Fatal编程技术网

Android 打开数据库SQLite时出错

Android 打开数据库SQLite时出错,android,sqlite,Android,Sqlite,我使用以下方法打开我的SQLite数据库 private void open() { database = dbHelper.getReadableDatabase(); } 他是我们公司的相关人员 public void onCreate(SQLiteDatabase la_db) { String s; try { InputStream in = context.getResources().openRawResource(R.raw.sql);

我使用以下方法打开我的SQLite数据库

private void open() {
    database = dbHelper.getReadableDatabase();
}
他是我们公司的相关人员

public void onCreate(SQLiteDatabase la_db) {
    String s;
    try {
        InputStream in = context.getResources().openRawResource(R.raw.sql);
        DocumentBuilder builder = DocumentBuilderFactory.newInstance()
                .newDocumentBuilder();
        Document doc = builder.parse(in, null);
        NodeList statements = doc.getElementsByTagName("statement");
        for (int i = 0; i < statements.getLength(); i++) {
            s = statements.item(i).getChildNodes().item(0).getNodeValue();
            la_db.execSQL(s);
        }
    } catch (Throwable t) {
        Toast.makeText(context, t.toString(), 50000).show();
    }
}

dbHelper
在您的
open()
中为空,您需要先创建一个实例,然后才能使用它。

您提供的代码肯定会失败。您需要在
dbHelper
的构造函数中提供上下文。我建议你改变你的课程:

添加构造函数:

private DatabaseHelper dbHelper;
public DataSource(Context context) {
    this.dbHelper =  new DatabaseHelper(context);
}

您无法避免在上下文中传递,但这通常不是一个大问题,从每个
活动
中,您可以将
作为
上下文
传递。更改后,您应该能够毫无问题地使用
dbHelper

发布初始化
dbHelper
变量的代码。@BorisStrandjev I使用
私有数据库helper dbHelper初始化。您没有向我们显示堆栈中提到的代码frame@binoy-不,你错了。你在那里申报。您能添加类的全部代码吗?这只是变量名和类型的增量,添加
=newdatabasehelper()
或稍后尝试添加
private DatabaseHelper dbHelper=new DatabaseHelper(null)的某个地方这样做。它仍然不起作用
01-01 00:59:38.725: E/AndroidRuntime(2060): Caused by: java.lang.NullPointerException
01-01 00:59:38.725: E/AndroidRuntime(2060):     at com.assistant.lab.royale.DataSource.open(DataSource.java:42)
01-01 00:59:38.725: E/AndroidRuntime(2060):     at com.assistant.lab.royale.DataSource.listViewCursor(DataSource.java:25)
01-01 00:59:38.725: E/AndroidRuntime(2060):     at com.assistant.lab.royale.LabAssistant.onCreate(LabAssistant.java:24)
01-01 00:59:38.725: E/AndroidRuntime(2060):     at android.app.Activity.performCreate(Activity.java:4465)
private DatabaseHelper dbHelper;
public DataSource(Context context) {
    this.dbHelper =  new DatabaseHelper(context);
}