今天自己动手操练了一下android的content provider. 写一个简单的小程序,自己建个数据库,搞个界面,用ListView把数据显示出来,然后可以在界面上添加数据。据我所知,这需要在数据库里有一列叫做_ID。当我运行我完成的小apk时,居然报错说“column '_id' dose not exist”,但是我的数据库有这列啊。难道是因为表为空?虽然明知道这样说不通还是试了下,添加了数据再看,同样的报错。难道是getReadableDatabase()用得不对?不是。导出数据库在电脑上确认“_ID”这列确实是有啊……自信心受到严重打击,这么个小程序调不通? 吃了午饭,休息了一会儿后,又想起这个问题,把“_ID ”改成小写试试。一个坏消息是,还是报错;好消息是报的错不一样了,报另外的列不存在。恍然大悟,就是区分大小写的嘛,新错误也是这个原因。
为什么我一开始没想到是区分大小写的呢?是因为之前在insert()的时候大小写不匹配也成功了,所以我惯性思维以为query()也不用区分大小写,然后就错了。真搞不懂对数据库的两个基本操作怎么会设计成一个区分大小写,一个不区分呢?