Я создаю простой коннектор mysql в c ++, чтобы сделать что-то очень специфичное и вернуть результат в 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++;
}