在Sqlite数据库中,无法从游标窗口读取第0行、第-1列的数据。

3

在Sqlite数据库的游标窗口中读取第0行,第-1列失败。

我使用了以下代码。

public Misc fetchmiscdetails(Context aContext,
            String acityName, String aLangName) {
        Misc miscobj = null;
        Cursor cursor = null;
        String where;
        try {

            String sqlTables = "misc";  
            where ="Select * from misc ";
            cursor = db.rawQuery(where, null);
        //  if (aLangName.equals("English"))
        //       where = "city_name = ?";
        //  else
        //       where = "city_name_ger = ?";

            qb.setTables(sqlTables);

        //  cursor = qb.query(db, null, where, new String[] { acityName}, null, null, null);
            if (cursor.getCount() > 0) {
                cursor.moveToFirst();
                do {
                    miscobj = new Misc(
                            cursor.getString(cursor.getColumnIndex("_id")),
                            cursor.getString(cursor.getColumnIndex("city_id")),
                            cursor.getString(cursor.getColumnIndex("countyr_id")),
                            cursor.getString(cursor.getColumnIndex("city_name")),
                            cursor.getString(cursor.getColumnIndex("city_name_ger")),
                            cursor.getString(cursor.getColumnIndex("city_lat")),
                            cursor.getString(cursor.getColumnIndex("city_long")),
                            cursor.getString(cursor.getColumnIndex("city_population")),
                            cursor.getString(cursor.getColumnIndex("city_timezone")),
                            cursor.getString(cursor.getColumnIndex("city_gmt")),
                            cursor.getString(cursor.getColumnIndex("city_dst")),
                            cursor.getString(cursor.getColumnIndex("city_lat_long")), 
                            cursor.getString(cursor.getColumnIndex("city_category")),
                            cursor.getString(cursor.getColumnIndex("city_text")),
                            cursor.getString(cursor.getColumnIndex("city_rowoffset")),
                            cursor.getString(cursor.getColumnIndex("city_value"))

                            );
                } while (cursor.moveToNext());
            }
            return miscobj;
        } catch (Exception e) {
            return miscobj;
        } finally {
            if (cursor != null && !cursor.isClosed()) {
                cursor.close();
            }
        }
    }
1个回答

5
当您尝试从游标中获取一个不存在或未包含在选择查询中的列的值时,就会发生这种情况。
由于您选择了所有列,因此最有可能是您在其中一个列名中拼写错误。
很可能。
cursor.getString(cursor.getColumnIndex("countyr_id"))

将方法中的所有列名与您在misc表的Create语句中使用的名称进行比较。


它正在工作。谢谢,有两个条目存在问题 1.cursor.getString(cursor.getColumnIndex("city_rowoffset"))更改为cursor.getString(cursor.getColumnIndex("city_rawoffset"))。 - Hitesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接