0

Eclipse ADT でデバッグするときに 2 行目にエラーが発生する次の 2 行があります。

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 です。クエリは 5 つ以上の列を返すことができますか?

また、rawqueryを使用するように変更すると、すべて正常に動作します:

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

queryrawqueryよりも優先されるという提案をいくつか読んだので、クエリを機能させたいと思います。クエリ行の何が問題なのですか?

前もって感謝します

4

2 に答える 2

0

ここで私の修正を共有したいだけです。これは間違いなく、テーブルに列 totalHours がないことが原因でした。データベースが同じdbバージョン1で作成された後にテーブルに追加されたに違いありません。データベースのバージョンを2に更新することで、データベースを再作成するようにトリガーすることを学びました。列挙子を再ロードすると、テーブルは列で再作成されましたtotalHours、今ではすべて正常に動作します。助けてくれてありがとう。私の解決策が他の初心者に役立つことを願っています。

ただし、特にバグを修正している間は、データベースを再作成するたびにデータベースのバージョン番号を増やす必要はありません。データベースのバージョンを上げずにデータベースを変更することはできますか?

于 2013-03-29T04:51:29.563 に答える
0

問題は 3 番目の引数"isDeleted = 0"にあります。次のようにコードを変更してみてください。

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

クエリ メソッドについては、Android デベロッパー サイトで読むことができます。

于 2013-03-28T17:31:35.173 に答える