我正在尝试从我在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)之外的所有其他字段的索引 有人可以帮帮我吗?
答案 0 :(得分:0)
尝试以这种方式获取密钥:
id = cur.getInt(0);
答案 1 :(得分:0)
cur.getColumnIndex("_id")
返回-1
表示此列在Cursor
中不存在。假设您将null
内的投影(ContentProvider
)未经更改传递到正确的表格,您可以确保数据库中不存在此列。
通常的原因是您在稍后阶段添加/重命名了该列,但忘记将数据库升级到新版本。这不会自动发生。
将数据库版本归档到SQLiteOpenHelper
或从系统设置中删除您的应用数据,看看是否会添加该列。