使用android进行sql查询的Nullpointer

时间:2015-11-27 12:12:07

标签: java android

我有一个带有main.class和main_fragment.class

的Android应用程序 片段类中的

我有这个代码部分:

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String query = "INSERT INTO " + SqlDbHelper.DATABASE_TABLE + " "
            + "(firstname,second name,bday) "
            + "values ('Max','Mustermann','20.05.2016')";

    Log.e ("-->",""+query);

    sqlHandler.executeQuery(query);
}

我想在我的数据库表中设置这个值。 但是我的应用程序在这行上崩溃了,带有java.lang.NullPointerException:

  

sqlHandler.executeQuery(查询);

我不明白这一点。 我的Log.e结果:

  

INSERT INTO PRODUCTS(firstname,secondname,bday)值('Max,'Mustermann','20.05.2016')

任何人都可以帮助我吗?

UPDATE 这是我的sqlHandler.class

public class SqlHandler {

public static final String DATABASE_NAME = "DATABASE";
public static final int DATABASE_VERSION = 1;
Context context;
SQLiteDatabase sqlDatabase;
SqlDbHelper dbHelper;

public SqlHandler(Context context) {
    dbHelper = new SqlDbHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
    sqlDatabase = dbHelper.getWritableDatabase();
}

public void executeQuery(String query) {
    try {

        if (sqlDatabase.isOpen()) {
            sqlDatabase.close();
        }

        sqlDatabase = dbHelper.getWritableDatabase();
        sqlDatabase.execSQL(query);

    } catch (Exception e) {

        System.out.println("DATABASE ERROR " + e);
    }

}

public Cursor selectQuery(String query) {
    Cursor c1 = null;
    try {

        if (sqlDatabase.isOpen()) {
            sqlDatabase.close();

        }
        sqlDatabase = dbHelper.getWritableDatabase();
        c1 = sqlDatabase.rawQuery(query, null);

    } catch (Exception e) {

        System.out.println("DATABASE ERROR " + e);

    }
    return c1;

}

}

1 个答案:

答案 0 :(得分:0)

您提供的第一个代码段不足以以任何确定性回答问题。从异常情况看,sqlHandler变量似乎为null,但是您没有提供任何代码来说明如何实例化它。

sqlHandler似乎是一个全局变量,所以你要在使用之前将它设置为SqlHandler类的一个实例,例如在使用它的类的构造函数中或者在调用它之前方法

sqlHandler = new SqlHandler(*some var of type Context*);