【发布时间】:2013-10-25 19:51:40
【问题描述】:
我们可以通过Sqlite3数据库的行知道列名和它的数据类型来获取Column的值吗?
for (int i=0; i<sqlite3_column_count(selectStatement); i++)
{
int intValue = 0;
const char *strValue;
switch (sqlite3_column_type(selectStatement,i))
{
}
}
我正在尝试这个,但我需要来自列名和数据类型的值。
在上述方法中,我们迭代所有列并比较类型。有什么我可以通过为动态查询系统指定数据类型和列名直接获取值的吗?
Android 等效代码,其中我有全局光标对象,它工作正常:
public Object get(String name, QueryDbType type) throws Exception {
Object retult = null;
int index = cursor.getColumnIndex(name);
switch (type) {
case Text:
retult = cursor.getString(index);
break;
case Int:
retult = cursor.getInt(index);
break;
default:
retult = cursor.getString(index);
break;
}
return retult;
}
【问题讨论】:
-
我不明白问题出在哪里;您知道结果中的哪一列,因为您可以在
SELECT语句中指定要获取的列,并且您知道数据类型是什么,因为它是模式的一部分。除非您正在创建某种动态查询系统? -
@trojanfoe - 是的,它用于动态查询系统
-
好的,那么您使用的是
SELECT * FROM还是SELECT name, name, name FROM? -
只有我需要执行。我将获得查询、列名和列数据类型。我需要发送这些的所有结果值。我只会得到 SELECT * FROM。我们可以在 android sqlite 中实现相同的功能。所以我问的是我们也可以在 ios 中实现。
-
@trojanfoe - 更新了我的问题,请检查。
标签: ios objective-c sqlite