问题是:在Android中实现系统自带数据库文件的多表联合查询,目前只知道使用Cursor进行简单的系统数据库文件操作,虽然可以使用SQLiteDatabase对象对自己的应用中的数据库文件进行较为复杂的数据操作,像多表联合查询之类的。现在的问题是怎样得到系统自带数据库文件的SQLiteDatabase的引用对象。2012-03-02
现发现有一个方法可以基本实现Android表中的基于SQL语言多表查询效果,使用SQLiteDatabase.rawQuery:
sqLiteDatabase = mdb.dbHelper.getReadableDatabase();
Cursor listCursor = sqLiteDatabase.rawQuery("SELECT _id,address,body,type,date,ac from MySms a , (SELECT max(date) maxd,count(address) ac from MySms Group By address) b where a.date = b.maxd order by date desc",null);
startManagingCursor(listCursor);
这是对系统短信数据库sms的查询,其中返回了短信ID,号码,短信内容,短信类型,时间及该号码中包含的短信数目。注意,这里能者样查询是因为我把系统的数据库在我的程序中备份了一份(就是语句中的MySms),所以可以使用SQLiteDatabase对象来使用SQL语言的查询。还有就是rawQuery()方法中的ORDER BY 参数是要设置为 null 的。 2012-03-04