当我在数据库中搜索某些内容时,我正在使游标索引超出范围"索引0请求:大小为0"错误.我在我的数据库中搜索的项目目前不存在,我知道这一点,但我如何处理项目不存在的查询.
我发了一个电话号码
public String searchNumber(Context context,String number){
ContactDB db = new ContactDB(context);
db.open();
Cursor curs = db.getIdFromPhone(number);
String test = curs.getString(curs.getColumnIndex(db.PHONE_NUMBER)); //fails here
curs.close();
db.close();
return test;
}
Run Code Online (Sandbox Code Playgroud)
询问
public Cursor getIdFromPhone(String where){
Cursor cur = db.query(DATABASE_TABLE, new String [] {ID,PHONE_NUMBER}
, PHONE_NUMBER + "='" + where + "'",null,null,null,null);
if(cur != null)
cur.moveToFirst();
return cur;
}
Run Code Online (Sandbox Code Playgroud)
测试搜索
from = messages.getDisplayOriginatingAddress();
String dbNumber = searchNumber(arg0,from);
if(dbNumber.equals(from)){
//do stuff
}else{
//do other stuff
}
Run Code Online (Sandbox Code Playgroud)
如果找不到数字,它应该执行else语句,但它没有那么远
我正在试图做一个数据库,但我有一个问题......
这是日志:
E/AndroidRuntime(894): FATAL EXCEPTION: main
E/AndroidRuntime(894): java.lang.IllegalStateException: Could not execute method of the activity
E/AndroidRuntime(894): at android.view.View$1.onClick(View.java:3044)
E/AndroidRuntime(894): at android.view.View.performClick(View.java:3511)
E/AndroidRuntime(894): at android.view.View$PerformClick.run(View.java:14105)
E/AndroidRuntime(894): at android.os.Handler.handleCallback(Handler.java:605)
E/AndroidRuntime(894): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(894): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(894): at android.app.ActivityThread.main(ActivityThread.java:4424)
E/AndroidRuntime(894): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(894): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(894): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(894): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(894): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(894): Caused by: java.lang.reflect.InvocationTargetException
E/AndroidRuntime(894): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(894): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(894): at android.view.View$1.onClick(View.java:3039)
E/AndroidRuntime(894): ... 11 more
E/AndroidRuntime(894): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a …Run Code Online (Sandbox Code Playgroud)