2012-01-18 35 views
1

我想使用SQLiteCursor类来获取数据(不使用Cursor类)。这是因为我需要访问像isBoolean或isInteger等方法。它们是从AbstractWindowedCursor继承的,并由这个类实现,而Cursor并不是这样。如何在android中使用SQLiteCursor类?

我正在写API 7,不能切换到API 11或以上使用getType方法(这不是我的项目,这是要求)。

问题是我不能像普通光标那样创建这个类的实例。它是如何完成的?我试过铸造它:

SQLiteCursor cursor = (SQLiteCursor)mDbHelper.getWritableDatabase().rawQuery(query,null); 

但我得到的只是一个ClassCastException。文档声明SQLiteCursor是“一个公开SQLite数据库查询结果的游标实现”。那么如果SQLiteDatabases的rawQuery和查询方法都返回不能被转换的Cursor,我怎么能得到它呢?我真的需要以某种方式获得列中的数据类型,所以我知道如何施放它们(我从来没有先验知道它们,因为所有的表都是非常通用的)。有没有一种简单的方法来获得这种方法,或者我应该采取一些解决方法?

感谢您的任何建议, kajman

回答

0

尝试使用如下

SQLiteDatabase myDB = this.openOrCreateDatabase("dbname", SQLiteDatabase.OPEN_READWRITE, null); 
Cursor c = myDB.rawQuery("select Name from contacts ", null); 
+0

这让我光标实例,而不是SQLiteCursor。在我的主题的第一句话中,我试图清楚地说明Cursor类不满足我。我需要SQLiteCursor来获取列类型,然后才能使用SQLiteCursor类获取数据或其他方式。 – kajman 2012-01-18 13:07:22

+2

通过此链接 http://stackoverflow.com/questions/6293063/indentifying-datatype-of-a-column-in-an-sqlite-android-cursor – Vamshi 2012-01-18 13:35:19

+0

谢谢@Vamshi,这看起来不够好。目前我正在使用解决方法(将所有数据视为字符串),但在将来某些时候我肯定会需要它。 – kajman 2012-01-18 13:53:36

相关问题