我正在用c ++构建一个简单的mysql连接器,以执行非常特定的操作并将结果返回给PHP。一路上我遇到了一个我无法很好解决的问题。
我正在编写的函数获取查询结果,并构建一个数组以返回到PHP。我想为该数组中的返回值分配正确的数据类型。
在下面的示例中,您可以看到我使用getString从字段中获取数据。这将返回SQLString
。我想使getString
动态(getInt
,getUInt
,...)具有正确的类型。我可以使用res_meta->getColumnTypeName(i)
访问字段类型。我的第一个想法是使用列名创建一个switch语句来执行正确的方法。对我来说,这似乎不是一种优雅的方式。还有其他选择吗?
// Select all columns/rows from example_table
res = stmt->executeQuery(query);
sql::ResultSetMetaData *res_meta = res -> getMetaData();
int columns = res_meta -> getColumnCount();
//Loop for each row
int key = 0;
Php::Value array;
while (res->next()) {
array[key] = "";
for (int i = 1; i <= columns; i++) {
string column = res_meta->getColumnName(i);
string columnTypeName = res_meta->getColumnTypeName(i);
Php::value value = res->getString(i);
array[key][column] = value;
}
key++;
}