java-使用字符串的动态转换
考虑一个sqlite数据库表java-使用字符串的动态转换,java,android,cursor,Java,Android,Cursor,考虑一个sqlite数据库表DRINK,其中包含以下列:Name(字符串)、Description(字符串)、ResourceID(int) 现在,每当我想从某一行中获取某个内容时,在获得游标cur后,我必须执行以下操作: cur = db.query(...); String name = cur.getString(0); String desc = cur.getString(1); int desc = cur.getInt(0); 但是,这种逻辑非常依赖于我对数据库表模式的了解,我想
DRINK
,其中包含以下列:Name
(字符串)、Description
(字符串)、ResourceID
(int)
现在,每当我想从某一行中获取某个内容时,在获得游标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
对游标不可用
但是,我还要求在执行此操作时,数据类型也被保留,这意味着,在其ResourceID
列中存储为integer
的1个instanceOf String=true
,它应该给出1个instanceOf int=true
那么,我为什么要这么做呢?如果我能做到这一点,那么我就可以像for循环一样从数据库中获取值,而不用担心模式中的内容,只提供它的长度
有什么方法可以实现这一点,或者至少可以实现类似的行为。调用,然后使用
switch
语句调用相应的getXxx()
方法。答对了!这正是我想要的,但我在这一行的文档中发现了一点混乱:`返回了列的首选类型,但数据可能会转换为get type方法中记录的其他类型,例如getInt(int)`,这意味着如果我们使用getInt(ResourceID),如果ResourceID是一个字符串,它会自动转换为int吗?@juztcode这意味着仅仅因为getType(“ResourceID”)
返回一个值,表示该类型是整数,并不意味着必须调用getInt()
。您仍然可以调用getString()
和getDouble()
,整数值将为您进行转换。在给定链接中遇到此int,什么是字段类型\u BLOB
,文档只会说:如果指定的列类型为BLOB
,则getType(int)返回的值。blob()是什么类型的值?@juztcode每种类型都有相应的getter方法,因此如果您查看getBlob()
方法的文档,您可能会了解更多信息。