我试图创建一个从数据库返回值的方法,并获得CursorIndexOutOfBounds: (第94行是:字符串计数= c.getString(1);)
public String getCount() {
// TODO Auto-generated method stub
String[] columns = new String[] { KEY_ROWID, KEY_COUNT };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=1",null, null, null, null);
if (c != null) {
c.moveToFirst();
String count = c.getString(1);
return count;
}
return null;
}
logcat的:
07-07 19:51:53.408: E/AndroidRuntime(27923): FATAL EXCEPTION: main
07-07 19:51:53.408: E/AndroidRuntime(27923): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
07-07 19:51:53.408: E/AndroidRuntime(27923): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:424)
07-07 19:51:53.408: E/AndroidRuntime(27923): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
07-07 19:51:53.408: E/AndroidRuntime(27923): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
07-07 19:51:53.408: E/AndroidRuntime(27923): at com.example.fartsound.MyDataBase.getCount(MyDataBase.java:94)
答案 0 :(得分:0)
光标从' 0'开始。用这个:
String count = c.getString(0);
答案 1 :(得分:0)
在if语句中移动c.moveToFirst()
。如果返回false,则游标为空并将获得该错误
if (c != null && c.moveToFirst())
答案 2 :(得分:0)
moveToFirst()方法的文献:
public abstract boolean moveToFirst()将光标移动到第一行。如果光标为空,则此方法将返回false。
返回移动是否成功。
所以你的moveToFirst调用失败了(因为cusrsor有0个元素),这就是崩溃的原因。
这样做:
if(c != null && c.moveToFirst()) {
String count = c.getString(0);
return count;
}