【问题标题】:Android database simplecursoradapter errorAndroid数据库simplecursoradapter错误
【发布时间】:2012-08-08 12:20:18
【问题描述】:

我正在编写一个安卓应用程序。

这是我的 BDHelper 类:

public class BD_Helper extends SQLiteOpenHelper{

private static final String BD_NOMBRE = "BD_PAED.db";
private static final int BD_VERSION = 1;
private static final String TABLA_AUDIT_NOMBRE = "audit";
private static final String TABLA_CONTROLES_NOMBRE = "controles";

private static final String crearAudit = 
                                "CREATE TABLE " + TABLA_AUDIT_NOMBRE + " (" +
                                "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                                "usuario TEXT, " +
                                "clave TEXT, " +
                                "userid INTEGER, " +
                                "pin TEXT, " +
                                "tema TEXT, " +
                                "colorFondo TEXT, " +
                                "color TEXT, " +
                                "colorFuente TEXT)";

private static final String crearControles = 
                                "CREATE TABLE " + TABLA_CONTROLES_NOMBRE + " (" +
                                "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                                "entryTypeId TEXT, " +
                                "statusTypeId TEXT, " +
                                "momentTypeId TEXT, " +
                                "activityTypeId TEXT, " +
                                "activityDuration TEXT, " +
                                "activityTypeOthers TEXT, " +
                                "intensityTypeId TEXT, " +
                                "measurementTime TEXT, " +
                                "glucosePre TEXT, " +
                                "CHRations TEXT, " +
                                "rapidInsulin TEXT, " +
                                "slowInsulin TEXT, " +
                                "glucosePost TEXT);";

public BD_Helper(Context context){
    super(context, BD_NOMBRE, null, BD_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {       
    db.execSQL(crearAudit);
    db.execSQL(crearControles);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("drop table if exists "+ TABLA_AUDIT_NOMBRE);
    db.execSQL("drop table if exists "+ TABLA_CONTROLES_NOMBRE);
    onCreate(db);
}

}

在其他类中,我正在尝试使用简单的光标适配器来显示控件数据库的信息:

private void cargaDatos(){
    String[] from;

    cursor = bdHelper.obtenerControles(entryTypeId);
    startManagingCursor(cursor);

        from = new String[] {BD_ControlesAdapter.CAMPO_MEASUREMENTTIME,BD_ControlesAdapter.CAMPO_ACTIVITYTYPEID};

    int[] to = new int[]{R.id.fila_fecha,R.id.fila_tipo};


    SimpleCursorAdapter controles = new SimpleCursorAdapter(this,R.layout.fila_controles,cursor,from,to,0);
    setListAdapter(controles);

}

但这不起作用,new SimpleCursorAdapter 会抛出:

IllegalArgumentException: column '_id' does not exist.

如果我检查我的 sqlite 数据库,这个列是在这个数据库中完美创建的。

有什么想法吗?

【问题讨论】:

    标签: android database simplecursoradapter


    【解决方案1】:

    恐怕您的光标从 obtenerControles() 方法中获取结果集,但其中没有 _id 字段。也就是说,您在查询时可能没有从表中获取 _id。

    发布您的 obtenerControles(entryTypeId) 代码或自行检查以确保它将 _id 提取到结果集中。

    【讨论】:

      猜你喜欢
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      相关资源
      最近更新 更多