我想做这样的事情:
public boolean containsKey(int primaryKey) {
SQLiteDatabase db = getReadableDatabase();
// what should i do here to determine if the db contains the primaryKey?
}
检查db是否包含指定值的最有效方法是什么?
答案 0 :(得分:1)
您可以尝试读取具有该PK值的行:
public boolean containsKey(int primaryKey) {
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.query("TableName", null, "IDColumn = " + primaryKey,
null, null, null, null);
return cursor.moveToFirst();
}
但是,最好使用helper function,以避免不得不使用游标:
public boolean containsKey(int primaryKey) {
SQLiteDatabase db = getReadableDatabase();
return DatabaseUtils.queryNumEntries(db, "TableName", "IDColumn = " + primaryKey) > 0;
}
答案 1 :(得分:0)
你应该检查sqlite方案。你可以尝试
"SELECT name FROM sqlite_master WHERE type='table'"
第二种变体:
PRAGMA table_info(table-name);
答案 2 :(得分:0)
如果您正在寻找获取表格的列名称:
PRAGMA table_info(your_table_name);
示例:
PRAGMA table_info(Login);
如果您在登录表中有主键,您将获得pk值1。
上查看本教程此pragma为指定表中的每列返回一行。 结果集中的列包括列名,数据类型,是否 或者不是列可以为NULL,以及列的默认值。 " pk"对于不是的列,结果集中的列为零 主键的一部分,是主键中列的索引 作为主键一部分的列的键。