java - 当单击我的按钮时,应用程序停止并在 android java 中出现错误

标签 java android database sqlite

我是 Android 开发新手,当单击“getir”按钮时出现此错误。下类后就出错了。如何解决这个问题

我的代码:

public  void getir(View view)
{
cursor = myData.rawQuery("SELECT * FROM kolonVeri", null);
    int gunIx = cursor.getColumnIndex("gun");
    int vtarihIx = cursor.getColumnIndex("vTarih");
        cursor.moveToFirst();

        while (cursor != null)
        {
         System.out.println("VARDİYA: " + cursor.getString(gunIx));
         System.out.println("TARİH: " + cursor.getString(vtarihIx));
            cursor.moveToNext();
        }

}

错误日志

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.hakannacar.vardiyam, PID: 19541
java.lang.IllegalStateException: Could not execute method for android:onClick
    om.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
 Caused by: java.lang.reflect.InvocationTargetException
   com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
 Caused by: android.database.CursorIndexOutOfBoundsException: Index 4 requested, with a size of 4

最佳答案

返回的 Cursor(例如,来自 rawQuery)不会为 null,对 null 的检查是无用的,并且如本例所示是危险的。

相反,您应该检查 Cursor move??? 方法以查看它们是否返回 true。

实际问题是,当只有 4 行(大小)时,您最终会尝试检索第 5 行(索引 4)的数据,因为 != null 的检查将始终为true,因此循环将继续到第 4 行之后。

因此您的代码可能是:-

public  void getir(View view)
{
    cursor = myData.rawQuery("SELECT * FROM kolonVeri", null);
    int gunIx = cursor.getColumnIndex("gun");
    int vtarihIx = cursor.getColumnIndex("vTarih");
    while (cursor.moveToNext()) {
         System.out.println("VARDİYA: " + cursor.getString(gunIx));
         System.out.println("TARİH: " + cursor.getString(vtarihIx));
    }
}

关于java - 当单击我的按钮时,应用程序停止并在 android java 中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50498833/

相关文章:

java - 使用 Metro 的 Ws-Security header

Java:使用文件选择器保存 DrawingBoard(JComponent) 的图像。

java - 将外部属性放入命名查询中

c# - 使用加速度计环顾四周 - Unity3D C#

android - Delphi XE5 Android 中的广播接收器

android - Firestore 与 Firebase 的离线问题

python - 用 Python 永久存储字典的优雅方式?

java - 在 Java 中相对地将 excel 公式设置为整个列?

javascript - 使用外部数据库在多个站点上更新 html 和 css

mysql - 用一个元组引用多行