Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.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空指针异常_Android_Nullpointerexception_Sqlite - Fatal编程技术网

创建数据库时出现Android空指针异常

创建数据库时出现Android空指针异常,android,nullpointerexception,sqlite,Android,Nullpointerexception,Sqlite,我有一个示例应用程序,它创建一个数据库、一个表并插入一行值 这是我的MainActivity.java: public class MainActivity extends Activity { protected static final android.content.Context Context = null; public String ReadingMode=""; @Override protected void onCreate(Bundle savedInstanceSta

我有一个示例应用程序,它创建一个数据库、一个表并插入一行值

这是我的
MainActivity.java

public class MainActivity extends Activity {

protected static final android.content.Context Context = null;
public String ReadingMode="";

@Override
protected void onCreate(Bundle savedInstanceState) {


             SQLiteDatabase sampleDB =  Context.openOrCreateDatabase("WaterElectricityReading", MODE_WORLD_READABLE, null);

             sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " +
                        "SampleTable " +
                        " (LastName VARCHAR, FirstName VARCHAR," +
                        " Country VARCHAR, Age INT(3));");

             sampleDB.execSQL("INSERT INTO " +
                        "SampleTable " +
                        " Values ('Makam','sample','India',25);");

             sampleDB.close();                       
        }


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}
当我逐行调试时,
空指针异常
在行附近引发:

 SQLiteDatabase sampleDB =  Context.openOrCreateDatabase("WaterElectricityReading", MODE_WORLD_READABLE, null); 
我看到
sampleDB
为空,并且没有创建
Database


我的代码有什么问题吗?

您正在用null初始化您的上下文

protected static final android.content.Context Context = null;
因此,当您使用空上下文时,它将抛出一个NPE,您可以使用活动上下文设置上下文,然后使用上下文

Context = MainActivity.this;
还是用这个

SQLiteDatabase sampleDB =  this.openOrCreateDatabase("WaterElectricityReading", MODE_WORLD_READABLE, null);

您正在用null初始化您的上下文

protected static final android.content.Context Context = null;
因此,当您使用空上下文时,它将抛出一个NPE,您可以使用活动上下文设置上下文,然后使用上下文

Context = MainActivity.this;
还是用这个

SQLiteDatabase sampleDB =  this.openOrCreateDatabase("WaterElectricityReading", MODE_WORLD_READABLE, null);

您正在初始化为
protectedstatic final android.content.Context Context=null
然后将其用作
Context.openOrCreateDatabase(“WaterElectricityReading”,MODE\u WORLD\u READABLE,null)


它将生成明显的空指针异常。

您正在初始化为
受保护的静态最终android.content.Context Context=null
然后将其用作
Context.openOrCreateDatabase(“WaterElectricityReading”,MODE\u WORLD\u READABLE,null)

它将为明显的错误生成空指针异常。

Repalce

  SQLiteDatabase sampleDB =  Context.openOrCreateDatabase("WaterElectricityReading", MODE_WORLD_READABLE, null);

原因:

  • 活动
    上下文
    的子类,因此您可以使用
  • openOrCreateDatabase
    不是静态方法,因此不能使用类名调用它
  • 修理

      SQLiteDatabase sampleDB =  Context.openOrCreateDatabase("WaterElectricityReading", MODE_WORLD_READABLE, null);
    

    原因:

  • 活动
    上下文
    的子类,因此您可以使用
  • openOrCreateDatabase
    不是静态方法,因此不能使用类名调用它