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 管理器SQLite 浏览器中重新创建数据库内容,然后进行查询并开始从 WHERE 类中删除内容,直到获得结果。

于 2013-04-23T23:37:28.690 回答
0

尝试将您的数据库变量分配给 SQLiteOpenHelper。我真的不知道一个相当随意thisgetWritableDatabase()方法。

SQLiteOpenHelper helper = new SQLiteOpenHelper()
SQLiteDatabase db = helper.getWritableDatabase();
于 2013-04-23T23:37:20.150 回答
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 回答