0

我有这两行,在 Eclipse ADT 中调试时,第二行会导致错误:

String[] tableColumns = new String[] {"_id","name","fruitId","vegeId","totalHours"};
Cursor cursor = db.query("PickingPeriod", tableColumns,"isDeleted = 0", null, null, null, "name" );

当我从 tableColumns 中取出“totalHours”时,它工作正常。似乎与totalHours有关,但它与fruitId和vegeId属于同一类型:INTEGER。查询可以返回超过 4 列吗?

另外,当我更改为使用 rawquery 时,一切正常:

Cursor cursor = db.rawQuery("SELECT * FROM PickingPeriod WHERE isDeleted = 0",null);

我阅读了一些建议,认为query优于rawquery,因此我想让查询正常工作。知道查询行有什么问题吗?

提前致谢

4

2 回答 2

0

问题出在第三个参数"isDeleted = 0"中,尝试如下更改您的代码:

Cursor cursor = db.query("PickingPeriod", tableColumns,"isDeleted = ? " , new String[] { String.valueOf(0) }, null, null, "name" );

您可以在Android 开发者网站上阅读有关查询方法的信息。

于 2013-03-28T17:31:35.173 回答
0

只是想在这里分享我的修复,这肯定是由于表中缺少列 totalHours 造成的。它一定是在同一数据库版本 1 下创建数据库后添加到表中的。我学会了通过将数据库版本更新为 2 来触发重新创建数据库。当我重新加载枚举器时,表是用列重新创建的totalHours,现在一切正常。感谢大家尝试提供帮助。希望我的解决方案对其他初学者有所帮助。

然而,剩下的问题是我不想每次我想重新创建数据库时都被迫增加数据库版本号,尤其是在修复错误时。是否可以在不增加db版本的情况下修改数据库?

于 2013-03-29T04:51:29.563 回答