0

私はSQLiteクエリを実行しています:

String selectQuery = "SELECT hotel.cityName, hotel.hotelName, hotel.roomName, hotel.roomCode, hotel.roomType, hotel.maxPax FROM hotel WHERE ( hotel.cityName = 'Adelaide' OR hotel.cityName = 'Brisbane' OR hotel.cityName = 'Canberra' ) AND hotel.maxPax < 200 AND hotel.maxPax >= 100 AND ( hotel.roomType = 'Boardroom' )"

XML から作成された "hotel" というデータベース テーブルに対して、次の見出しを付けます (DDMS による)。

id (INT)
cityName (TEXT)
hotelName (TEXT)
roomCode (TEXT)
roomName (TEXT)
roomType (TEXT)
maxPax (INT)

クエリを実行するたびに:

    SQLiteDatabase db = this.getWritableDatabase ( );
    Cursor cursor = db.rawQuery ( selectQuery, null );

cursor.getCount() は 0 を返します。

実際のデータを確認しましたが、このクエリは間違いなくデータを返すはずです。なぜcursor.getCount()は0を返すのですか?

4

3 に答える 3

1

あなたの Java コードは問題ないように見えますが、問題は SQL にあると推測しています。このような問題が発生した場合、私はしばしば Firefox のSQLite ManagerまたはSQLite Browserで DB コンテンツを再作成し、クエリを取得して、結果が得られるまで WHERE クラスから何かを削除し始めます。

于 2013-04-23T23:37:28.690 に答える
0

「クエリ」メソッドを使用してみてください ( Android 開発者)

db.query("hotel", null, "(cityName = ? OR cityName = ? OR cityName = ?) AND maxPax < 200 AND maxPax >= 100 AND roomType = ?", new String[] {"Adelaide", "Brisbane", "Canberra", "Boardroom"}, null, null, null);

うまくいかない場合は、データベースを抽出してクエリをテストします。

于 2013-04-23T23:34:57.560 に答える
0

データベース変数を SQLiteOpenHelper に割り当ててみてください。thisかなり恣意的なメソッドがあるかどうかはよくわかりませんgetWritableDatabase()

SQLiteOpenHelper helper = new SQLiteOpenHelper()
SQLiteDatabase db = helper.getWritableDatabase();
于 2013-04-23T23:37:20.150 に答える