MySQL c ++ использует getColumnTypeName для доступа к набору результатов - PullRequest
0 голосов
/ 08 июля 2019

Я создаю простой коннектор 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++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...