java - 如何解决大小为0的android.database.CursorIndexOutOfBoundsException : Index 0 requested,

标签 java android sqlite cursor

我已经寻找解决方案很长时间了,但仍然找不到相关的方法来使其发挥作用。
我在 Android studio 的外部 myDBClass.java 中有这个方法来查找最后插入的行。

public Cursor lastrow() {
    // TODO Auto-generated method stub
    try{
         SQLiteDatabase db;
         db = this.getReadableDatabase(); // Read Data
         String query = "SELECT ID As _id, Spinpos, Details, Setfor from alarm order by ID DESC limit 1";
         Cursor cursor = db.rawQuery(query, null);
         if(cursor != null)
            {
                cursor.moveToFirst();
                return cursor;
            }
            else
            {
                return null;
            }

         } catch (Exception e) {
           return null;
         }
      }

然后我在MainActivity.java中执行它

 myDBClass myDb = new myDBClass(this);      
 Cursor cursor  = myDb.lastrow();  
 String SongID = cursor.getString(cursor.getColumnIndex("Spinpos"));  
 Toast.makeText(this,SongID,Toast.LENGTH_LONG).show();  

它抛出 android.database.CursorIndexOutOfBoundsException。请给我一个解决方案。

最佳答案

光标初始化为位置-1,因此当您调用moveToNext()时,如果光标到达位置0,则返回true,这意味着数据库至少获取了一个值。

使用这个

 if(cursor.moveToNext()){

     //database fetched at least one value
 }

关于java - 如何解决大小为0的android.database.CursorIndexOutOfBoundsException : Index 0 requested,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45017525/

相关文章:

java - 从 wsdl 生成 java 类时出错

android - 如何让 Spinner 像 Gmail 应用程序一样在抽屉导航内将项目显示为列表?

Android 输入法管理器获取只有数字的键盘

android - 使用单个 SQLite 文件作为存储的正确结构

Java:如何从另一个方法输出用户输入(多个字符串/整数)

java - ObjectMapper 无法解析为类型

java - 如何使用 Java 运行时使用 "cd"命令?

android - 在 AOSP 中编译和部署各个组件

android - 如何在我的 Android 应用程序中加入两个 SQLite 表?

python-2.7 - 将记录插入具有大量列的 SQLite 表中