Android 我想从数据库中动态检索数据,我写了这段代码,但我得到的索引错误超出了界限
我写这段代码是为了动态地从数据库中获取数据,但是我发现索引的错误超出了界限。请帮我找出我错的地方 这是错误日志Android 我想从数据库中动态检索数据,我写了这段代码,但我得到的索引错误超出了界限,android,Android,我写这段代码是为了动态地从数据库中获取数据,但是我发现索引的错误超出了界限。请帮我找出我错的地方 这是错误日志 public ArrayList<String> displayEntery(String emailid) { // TODO Auto-generated method stub ArrayList<String> retVals = new ArrayList<String>();
public ArrayList<String> displayEntery(String emailid) {
// TODO Auto-generated method stub
ArrayList<String> retVals = new ArrayList<String>();
String selectQuery = "SELECT * FROM LOGIN where EMAILID = '" + emailid
+ "'";
Cursor c = db.rawQuery(selectQuery, null);
if (c.moveToFirst()) {
do {
// retVals.add(GetColumnValue(c, "NAME")); // name
String ugName = GetColumnValue(c, "NAME");
String email = GetColumnValue(c, "EMAILID");
String phone = GetColumnValue(c, "PHONE");
retVals.add(ugName);
retVals.add(email);
retVals.add(phone);
} while (c.moveToNext());
}
return retVals;
}
试试
public ArrayList displayentry(字符串emailid){
//TODO自动生成的方法存根
ArrayList retVals=新的ArrayList();
String selectQuery=“从EMAILID=”的登录名中选择*”+EMAILID
+ "'";
游标c=db.rawQuery(selectQuery,null);
if(c.moveToFirst()){
while(c.moveToNext()){
//add(GetColumnValue(c,“NAME”);//NAME
字符串ugName=GetColumnValue(c,“名称”);
字符串email=GetColumnValue(c,“EMAILID”);
字符串phone=GetColumnValue(c,“phone”);
retVals.add(ugName);
retVals.add(电子邮件);
检索。添加(电话);
} ;
}
归还;
}
什么是GetColumnValue()?很可能您正在试图读取一个不存在的列。@theRoot。。。为什么?哪一个应该是优势呢?将if(c.moveToFirst()){
更改为if(c!=null&&c.moveToFirst()){
那么,你的答案就是用while
替换while…while
?嘿,谢谢你的回复,但它不会产生相同的错误,我在这里分享了错误日志
03-25 16:51:43.832: E/AndroidRuntime(4126): FATAL EXCEPTION: main
03-25 16:51:43.832: E/AndroidRuntime(4126): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appetals.sqllite/com.appetals.sqllite.Welcomepage}: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
03-25 16:51:43.832: E/AndroidRuntime(4126): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
03-25 16:51:43.832: E/AndroidRuntime(4126): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
03-25 16:51:43.832: E/AndroidRuntime(4126): at android.app.ActivityThread.access$600(ActivityThread.java:130)
03-25 16:51:43.832: E/AndroidRuntime(4126): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
03-25 16:51:43.832: E/AndroidRuntime(4126): at android.os.Handler.dispatchMessage(Handler.java:99)
03-25 16:51:43.832: E/AndroidRuntime(4126): at android.os.Looper.loop(Looper.java:137)
03-25 16:51:43.832: E/AndroidRuntime(4126): at android.app.ActivityThread.main(ActivityThread.java:4745)
03-25 16:51:43.832: E/AndroidRuntime(4126): at java.lang.reflect.Method.invokeNative(Native Method)
03-25 16:51:43.832: E/AndroidRuntime(4126): at java.lang.reflect.Method.invoke(Method.java:511)
03-25 16:51:43.832: E/AndroidRuntime(4126): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-25 16:51:43.832: E/AndroidRuntime(4126): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-25 16:51:43.832: E/AndroidRuntime(4126): at dalvik.system.NativeStart.main(Native Method)
03-25 16:51:43.832: E/AndroidRuntime(4126): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
03-25 16:51:43.832: E/AndroidRuntime(4126): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
03-25 16:51:43.832: E/AndroidRuntime(4126): at java.util.ArrayList.get(ArrayList.java:304)
03-25 16:51:43.832: E/AndroidRuntime(4126): at com.appetals.sqllite.Welcomepage.onCreate(Welcomepage.java:41)
03-25 16:51:43.832: E/AndroidRuntime(4126): at android.app.Activity.performCreate(Activity.java:5008)
03-25 16:51:43.832: E/AndroidRuntime(4126): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
03-25 16:51:43.832: E/AndroidRuntime(4126): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
public ArrayList<String> displayEntery(String emailid) {
// TODO Auto-generated method stub
ArrayList<String> retVals = new ArrayList<String>();
String selectQuery = "SELECT * FROM LOGIN where EMAILID = '" + emailid
+ "'";
Cursor c = db.rawQuery(selectQuery, null);
if (c.moveToFirst()) {
while (c.moveToNext()) {
// retVals.add(GetColumnValue(c, "NAME")); // name
String ugName = GetColumnValue(c, "NAME");
String email = GetColumnValue(c, "EMAILID");
String phone = GetColumnValue(c, "PHONE");
retVals.add(ugName);
retVals.add(email);
retVals.add(phone);
} ;
}
return retVals;
}