无法从Sqlite数据库中的光标窗口读取第0行,第1列

时间:2014-08-23 05:43:31

标签: java android sql sqlite

无法从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 个答案:

答案 0 :(得分:4)

当您尝试从Cursor获取不存在或未包含在Select查询中的列时,会发生这种情况。

由于您选择了所有列,因此您很可能在其中一个列名称中出现拼写错误。

最有可能

cursor.getString(cursor.getColumnIndex("countyr_id"))

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