- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我的应用程序的用户崩溃报告中有这个错误。这是报告:
android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
at android.database.AbstractCursor.checkPosition(AbstractCursor.)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
at rs.androidaplikacije.zastaveigradovi.Kviz10Hard.nextQuestionGrad(Kviz10Hard.)
at rs.androidaplikacije.zastaveigradovi.Kviz10Hard.access$1(Kviz10Hard.)
at rs.androidaplikacije.zastaveigradovi.Kviz10Hard$2.run(Kviz10Hard.java:68)
at android.os.Handler.handleCallback(Handler.)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.)
at android.app.ActivityThread.main(ActivityThread.)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.)
at dalvik.system.NativeStart.main(Native Method)
这里是提到的代码:
private void nextQuestionGrad() {
flag.setVisibility(View.GONE);
dodatnoPitanje.setVisibility(View.VISIBLE);
TestAdapter mDbHelper = new TestAdapter(this);
DataBaseHelper myDbHelper = new DataBaseHelper(this);
if(!myDbHelper.checkDataBase()){
mDbHelper.createDatabase();
}
try{
mDbHelper.open();
Cursor c = mDbHelper.getTestDataGradovi(mCurrentID);
List<Answer> labels = new ArrayList<Answer>();
labels.add(new Answer(c.getString(2), true));
labels.add(new Answer(c.getString(3), false));
labels.add(new Answer(c.getString(4), false));
labels.add(new Answer(c.getString(5), false));
tacanOdg = c.getString(2);
Collections.shuffle(labels);
dodatnoPitanje.setText(c.getString(1));
bOdgovor1.setText(labels.get(0).option);
bOdgovor1.setTag(labels.get(0));
bOdgovor1.setOnClickListener(clickListenerGrad);
bOdgovor2.setText(labels.get(1).option);
bOdgovor2.setTag(labels.get(1));
bOdgovor2.setOnClickListener(clickListenerGrad);
bOdgovor3.setText(labels.get(2).option);
bOdgovor3.setTag(labels.get(2));
bOdgovor3.setOnClickListener(clickListenerGrad);
bOdgovor4.setText(labels.get(3).option);
bOdgovor4.setTag(labels.get(3));
bOdgovor4.setOnClickListener(clickListenerGrad);
score.setText("Score: " + brojacTacnihOdgovora);
}finally{
mDbHelper.close();
}
}
还有我正在用于此类的适配器类的一部分:
public Cursor getTestDataGradovi(long id){
try{
String sql ="SELECT * FROM tblGradovi WHERE _ID = " + id;
Cursor c = mDb.rawQuery(sql, null);
if (c!=null){
c.moveToNext();
}
return c;
}catch (SQLException mSQLException){
Log.e(TAG, "getTestData >>"+ mSQLException.toString());
throw mSQLException;
}
}
谁能告诉我问题出在哪里?错误行 (Kviz10Hard.) 在这里:
labels.add(new Answer(c.getString(2), true));
最佳答案
在尝试从 Cursor
对象获取任何数据之前,您需要迭代结果,或者如果游标仅包含一个值,则获取第一个结果。例如,要在所有结果之间进行迭代,您应该这样做:
String sql = "SELECT * FROM myTable";
Cursor cursor = mDbHelper.rawQuery(sql, null);
if(cursor != null){
if(cursor.getCount() > 0){
for(cursor.move(0);cursor.moveToNext();cursor.isAfterLast()){
// get your data here
}
}
cursor.close(); // close your cursor when you don't need it anymore
}
或者另一种方法:
String sql = "SELECT * FROM myTable";
Cursor cursor = mDbHelper.rawQuery(sql, null);
if(cursor != null){
if(cursor.getCount() > 0){
do {
// get value
} while(cursor.moveToNext());
}
cursor.close(); // close your cursor when you don't need it anymore
}
或者如果您非常确定结果应该只是一个对象,具体取决于您的 sql 语句,您应该调用 cursor.moveToFirst();
在从您的 Cursor
访问任何内容之前> 像这样:
String sql = "SELECT * FROM myTable";
Cursor cursor = mDbHelper.rawQuery(sql, null);
if(cursor != null){
cursor.moveToFirst();
String myString = cursor.getString(cursor.getColumnIndex("title"));
cursor.close(); // close your cursor when you don't need it anymore
}
编辑:
如果你真的想在你的数据库类中创建这样的函数,我会这样做:
public static Cursor getUserTitles(int userId){
String sql = "SELECT * FROM myTable WHERE userId=?";
return mDbHelper.rawQuery(sql, new String[]{Integer.toString(userId)});
}
第二次编辑:
将您的 getTestDataGradovi
更改为:
public Cursor getTestDataGradovi(long id){
String sql ="SELECT * FROM tblGradovi WHERE _ID=?";
return mDb.rawQuery(sql, new String[]{Integer.toString(id)});
}
并在 Cursor c = mDbHelper.getTestDataGradovi(mCurrentID); 之后添加
c.moveToFirst();
;
关于java - android.database.CursorIndexOutOfBoundsException...再一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16417055/
我想使用 List 和 Cursor 将两个值放入 SQLite 数据库中的一个微调器行中,这是我的代码: 将数据放入列表: public List getAllLabelsServer(){
我正在使用以下查询查询数据库: final Cursor subject_cursor = db.rawQuery("SELECT * FROM " + DB.Table.SUBJECT +
我正在尝试检索sqlite数据库的数据。并将其放在字符串上以进一步显示,但我收到此错误,请帮助我解决该错误! 这是显示错误的 logcat 数据 12-31 13:18:55.141: E/1
我正在尝试加载联系人信息并使用 ListView 显示它。但是我得到了一个错误。 我的代码: public class Sync extends ListActivity implements OnC
现在我正在使用 sqllite 存储所有 json 值的 json 应用程序。值存储正确,我正在为 sqllite 获取数据,发生以下错误请帮助我... 12-09 13:51:22.808: ERR
这是我遇到的错误: 07-20 11:04:45.564: E/AndroidRuntime(1905): java.lang.RuntimeException: Unable to start ac
这是我的 LogCat 日志: 08-25 22:35:27.989: ERROR/AndroidRuntime(327): Caused by: android.database.CursorInd
我在使用 Cursors 对 Android 数据库执行 SQLite 查询时遇到问题,如果我尝试使用 getPage,我会得到一个 android.database.CursorIndexOutOf
亲爱的stackoverflowers, 我的 android 应用程序中有一个数据库,我向它发送一个字符串并返回一个游标。这是代码: public Cursor listSearch(String
由于 Android 数据库错误,我的光标导致应用程序崩溃。 CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
我使用 android studio 在 android 中尝试了一个简单的注册应用程序。我正在尝试制作一个简单的数据库并在其中插入值。我在调试我的应用程序时收到以下无法理解的错误。 FATAL EX
这是错误,它说索引超出范围,但我不知道如何解决它,有一些土耳其语单词但它们并不重要,我认为: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.
所以我一直在尝试在我的 sqlite 数据库中查询我的 Android 应用程序。然而,我的光标似乎也没有像预期的那样工作,因为我可以获得任何结果。 我知道我的数据库中只有 3 个项目,但我在查询中输
这是我的 SqlLite 查询代码,我在其中定义一个方法来从类别中获取颜色类别并将其作为字符串返回给该方法 public String getCategoryColor(String task) {
我刚刚收到使用我的 Android 应用程序的用户的错误报告。 java.lang.RuntimeException: Unable to start activity ComponentInfo{c
我正在尝试在我正在构建的应用程序中分享视频(到社交媒体)。我正在使用需要 Uri 来解析的 Intent 。我试图在一个简单的文件管理器(列表 Activity )上选择项目,然后长按共享它们。因此,
这是我的代码: Log.d("MYTAG", "random number -->" + randomNumber); idRandomCards[i] = cursorTypeZero.getI
我在我的 sqlite 数据库中使用一个配置表。这具有以下组成: private static final String DATABASE_CONFIG_CREATE = "CREATE TA
我一直在努力使用我的一个表字段查询我的 SQLite 数据库。我使用 ForeignId 字段成功查询,但没有使用我的表 QuizTable 的 Available 字段。我希望你能指出我错过的事情。
所以,我的应用程序的用户崩溃报告中有这个错误。这是报告: android.database.CursorIndexOutOfBoundsException: Index 0 requested, wi
我是一名优秀的程序员,十分优秀!