private void pudata() {
//cursor=sdb.query("books", new String[]{"id","bookname","price"}, null, null, null, null, null);
SQLiteQueryBuilder sqb=new SQLiteQueryBuilder();
sqb.setTables("books");
String returnColumn[]={"books.id as _id","books.bookname","books.price"};
cursor=sqb.query(sdb, returnColumn, null, null, null, null,null);
Log.e("", "rows:"+cursor.getCount());
startManagingCursor(cursor);
ListAdapter adapter=new SimpleCursorAdapter(this,R.layout.listview,cursor,
new String[]{"_id","bookname","price"},new int[]{R.id.listview_id,R.id.listview_name,R.id.listview_price});
lv.setAdapter(adapter);
}
使用SimpleCursorAdapter给ListView填充数据时,报异常:
05-29 16:03:17.707: E/AndroidRuntime(28723): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist。
该数据表中并没有_id字段,所以感觉很奇怪。
修改的方式是:在确定查询字段时,可以将主键别名为_id,然后在创建SimpleCursorAdapter时指定该别名即可。
(不过仍然感觉很奇怪,为何非要_id呢?)