如何在android中查看sqlite中的主键id字段

时间:2012-08-31 11:09:03

标签: android database sqlite

我正在尝试从我在android上创建的sql表中检索行id(_id)并使用自动增量 除了主键字段,我可以看到表中的所有其他字段。 这个id是表的代码:

public static final String ID = "_id";
public static final String JOKE = "Joke";
public static final String AUTHOR = "Author";
public static final String DATE = "Date";
public static final String STATUS = "Status"; 
public void onCreate(SQLiteDatabase db) {
  db.execSQL("CREATE TABLE " + TABLE_NAME + " ( " 
            + ID  + " INTEGER PRIMARY KEY AUTOINCREMENT , " 
            + JOKE + " TEXT, " 
            + AUTHOR + " TEXT, " 
            + DATE + " DATE, " 
            + STATUS + " TEXT " 
            + ")");         
    }    

当我尝试接收字段的索引时,我收到-1作为字段ID

Cursor cur = context.getContentResolver().query(MyContentProvider.CONTENT_URI, null, null, null, null); 
if (cur.moveToFirst()) {
        int idColumn = cur.getColumnIndex("_id");
        int authorColumn = cur.getColumnIndex("Author");
        int statusColumn = cur.getColumnIndex("Status"); 
        int dateColumn = cur.getColumnIndex("Date");    

我可以看到除了关键字段(_id)之外的所有其他字段的索引 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

尝试以这种方式获取密钥:

id = cur.getInt(0);

答案 1 :(得分:0)

cur.getColumnIndex("_id")返回-1表示此列在Cursor中不存在。假设您将null内的投影(ContentProvider)未经更改传递到正确的表格,您可以确保数据库中不存在此列。

通常的原因是您在稍后阶段添加/重命名了该列,但忘记将数据库升级到新版本。这不会自动发生。

将数据库版本归档到SQLiteOpenHelper或从系统设置中删除您的应用数据,看看是否会添加该列。