考虑一个 sqlite 数据库表 DRINK
,其中包含以下列:Name
(字符串)、Description
(字符串)、ResourceID
(整数)。
现在,每次我想从特定行中获取某些内容时,我都会得到一个 Cursor cur
,我必须执行以下操作:
cur = db.query(...);
String name = cur.getString(0);
String desc = cur.getString(1);
int desc = cur.getInt(0);
但是,这个逻辑非常依赖于我对数据库表模式的了解,我想避免这一点。我想做的是这样的:
Object x = cur.getObject(0); //not available
但是,正如标记的那样,getObject
对光标不可用
但是,我还要求在执行此操作时也保留数据类型,这意味着 1
在其 ResourceID
列中存储为 integer
,不给出 1 instanceOf String=true
,它应该给出 1 instanceOf int=true
。
那么,我为什么要这么做呢?如果我能做到这一点,那么我可以通过类似 for 循环的方式从数据库中获取值,而不必担心模式中的内容并仅提供其长度。
有哪些方法可以实现这一点,或者至少实现类似的行为。
最佳答案
调用getType()
然后使用 switch
语句调用适当的 getXxx()
方法。
关于java - 使用字符串进行动态转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61160205/