Android 查询数据库时使用空指针
我在数据库中搜索一个数字,判断它是否存在,并返回一个布尔值,但查询在运行时总是给我一个空指针异常 质疑 实施Android 查询数据库时使用空指针,android,nullpointerexception,Android,Nullpointerexception,我在数据库中搜索一个数字,判断它是否存在,并返回一个布尔值,但查询在运行时总是给我一个空指针异常 质疑 实施 ContactDB db = new ContactDB(arg0); boolean dbNumber = db.getPhone(from);//searchNumber(arg0,from); if(dbNumber == true){ //if number exists do stuff
ContactDB db = new ContactDB(arg0);
boolean dbNumber = db.getPhone(from);//searchNumber(arg0,from);
if(dbNumber == true){
//if number exists do stuff
}else{
//if number does not exist do other stuff
}
它在查询时总是失败
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): FATAL EXCEPTION: main
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): java.lang.RuntimeException: Unable to start receiver com.app.notifyme.SmsReciever: java.lang.NullPointerException
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1805)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at android.app.ActivityThread.access$2400(ActivityThread.java:117)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:981)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at android.os.Handler.dispatchMessage(Handler.java:99)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at android.os.Looper.loop(Looper.java:123)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at java.lang.reflect.Method.invokeNative(Native Method)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at java.lang.reflect.Method.invoke(Method.java:507)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at dalvik.system.NativeStart.main(Native Method)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): Caused by: java.lang.NullPointerException
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at com.app.notifyme.ContactDB.getPhone(ContactDB.java:87)
03-16 11:57:06.522: ERROR/AndroidRuntime(28579): at com.app.notifyme.SmsReciever.onReceive(SmsReciever.java:55)
03-16 11:57:06.522:ERROR/AndroidRuntime(28579):在android.app.ActivityThread.handleReceiver(ActivityThread.java:1794)上,您必须打开数据库:
ContactDB db = new ContactDB(arg0);
db.open();
或者它会抛出NPE。当您不再需要它时,请不要忘记关闭它。尝试更改您的
数据库。查询(…)
行:
Cursor cur = db.query(
DATABASE_TABLE,
new String [] {ID,PHONE_NUMBER},
PHONE_NUMBER + " = " + theNumber,
null, null, null, null, null);
根据,您的
选择
参数不应包含WHERE
关键字。需要打开数据库。还可以尝试使用rawquery(query,selectionargs)方法执行sql查询 ContactDB.java中的第87行在哪里?这里是一个字符串,在下面的方法getPhone(String Where)中作为参数传递。但是方法getPhone在数据库类中,所以不需要打开它,对吗*编辑哦,没关系,我只是注意到我调用getPhone方法时没有打开它
Cursor cur = db.query(
DATABASE_TABLE,
new String [] {ID,PHONE_NUMBER},
PHONE_NUMBER + " = " + theNumber,
null, null, null, null, null);