【问题标题】:Android app crashes when retrieving data from SQLite database从 SQLite 数据库检索数据时,Android 应用程序崩溃
【发布时间】:2018-02-20 18:49:06
【问题描述】:

这是retriver方法:

public Cursor getData(String subj) {

    String selectQuery = "SELECT " + subj + " FROM " + TABLE_PRIMEIRO;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    if(cursor != null){
        cursor.moveToFirst();
    }
    return cursor;
}

这就是我在 TextView 中的显示方式:

        Cursor cursor = db.getData("columnname");
        cursor.moveToFirst();
        String dataget = cursor.getString(cursor.getColumnIndex("columnname"));
        if (dataget!= null){
            textView1.setText(dataget);
        }

该应用程序是为 API 23+ 制作的,此代码在 API 23 模拟器和我自己的手机(具有 Android 7.1)上运行良好,但在其他手机上无法运行。 (Android 7.0 和 6.0)。

【问题讨论】:

  • 阅读stackoverflow.com/questions/23353173/…获取一些提示以查找错误源
  • 当它在模拟器上真正完美运行并且我无法获得错误日志时,有点难以找到问题......
  • 您是否创建了 6.0 AVD?还是您有崩溃的设备?
  • 我确实创建了一个 6.0 的 AVD,并且没有崩溃,但是当我尝试在我朋友的 6.0 设备上运行该应用程序时,它确实崩溃了。
  • 你能从你朋友的设备上获取错误日志吗?

标签: java android sqlite android-studio android-sqlite


【解决方案1】:

通过更改修复它:

    Cursor cursor = db.getData("columnname");
    cursor.moveToFirst();
    String dataget = cursor.getString(cursor.getColumnIndex("columnname"));
    if (dataget!= null){
        textView1.setText(dataget);
    }

收件人:

    Cursor cursor = db.getData("columnname");
    cursor.moveToFirst();
    if (cursor.moveToFirst()){
        String dataget = cursor.getString(cursor.getColumnIndex("columnname"));
        if (dataget!= null){
        textView1.setText(dataget);
        }
    } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多