我在getValues()时遇到空指针异常问题。
06-17 12:35:23.705:E / AndroidRuntime(626):在android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
06-17 12:35:23.705:E / AndroidRuntime(626):在android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188)
06-17 12:35:23.705:E / AndroidRuntime(626):at myfirst.project.Database.getValue(Database.java:48)
public class Database扩展了SQLiteOpenHelper {
public static final String PASSWORD_TABLE="PASSWORD";
public static final String NUMBER_PASSWD="NUMBER";
public Database(Context context) {
super(context, "password.db", null, 1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql = String
.format("create table %s (%s TEXT PRIMARY KEY)",PASSWORD_TABLE,NUMBER_PASSWD);
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
public void storeValue(String pswd)
{
SQLiteDatabase db=getWritableDatabase();
db.delete(PASSWORD_TABLE, null, null);
ContentValues value= new ContentValues();
value.put(NUMBER_PASSWD, true);
db.insert(PASSWORD_TABLE, null, value);
Log.d(MainActivity.DEBUG_TAG, "Entered valu is stored");
db.close();
}
public String getValue()
{
SQLiteDatabase db=getReadableDatabase();
String sql = String.format("SELECT %sFROM %s ", NUMBER_PASSWD,PASSWORD_TABLE);
db.close();
Log.d(MainActivity.DEBUG_TAG,"Sending Value");
return sql;
}
}
答案 0 :(得分:1)
传递给数据库助手的Context
为空。但是,您发布的代码并未真正显示上下文参数值的来源。
为有效的Context
更改它可以解决此特定问题。它没有解决getValue()
方法似乎没有多大意义的问题:它打开一个数据库,关闭它并返回一个语法错误的SQL字符串。