Android 安卓SQLite“;0“U id”;在select语句中
我用的是jgilfelt的 我试图查看他的示例项目,发现了以下代码:Android 安卓SQLite“;0“U id”;在select语句中,android,sqlite,Android,Sqlite,我用的是jgilfelt的 我试图查看他的示例项目,发现了以下代码: public Cursor getEmployees() { SQLiteDatabase db = getReadableDatabase(); SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); String [] sqlSelect = {"0 _id", "FirstName", "LastName"}; String sql
public Cursor getEmployees() {
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String [] sqlSelect = {"0 _id", "FirstName", "LastName"};
String sqlTables = "Employees";
qb.setTables(sqlTables);
Cursor c = qb.query(db, sqlSelect, null, null,
null, null, null);
c.moveToFirst();
return c;
}
“0”在“ID”字段的select语句中的含义是什么?它使用列名
\u ID
返回0
的值(它使用列名别名)
您可以通过这种方式返回表中不存在的列。一些Android适配器要求您始终选择一个_id字段,即使您的表中没有。试试看,你的应用程序将在不选择_id的情况下崩溃。因此,他们正在通过选择一个包含0的模拟_id值来解决这个问题
编辑:更好的方法是,例如,如果您想在表中使用“id”而不是“\u id”,只需执行
选择id作为\u id FROM…
这不是真的。我刚刚试过,至少在4.4上,它可以用任何名称返回单个列,例如{“2 aaa”}
。这取决于您使用的适配器。这里有更多信息:所讨论的代码在顶部有一个链接,该代码使用SimpleCursorAdapter中的光标。是的,我注意到表中没有列_id。因此,如果我打印_id的值,它将一直返回0,对吗?至于_id,我将使用rowid _id,因此它将返回真实的行id(每个SQLite表中都有一个隐藏列),而不是0。