Android数据库simplecursoradapter错误

时间:2012-08-08 12:20:19

标签: android database simplecursoradapter

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

这是我的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);
}

}

在其他课程中,我试图使用simplecursoradapter来显示控制数据库的信息:

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数据库,则此列完全在此数据库中创建。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我担心,你的光标从obtenerControles()方法获取结果集,而没有_id字段。也就是说,你可能在查询时没有从你的表中获取_id。

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