Как сохранить результат запроса mySQL в структуре C ++ - PullRequest
0 голосов
/ 21 марта 2020

У меня есть структура, которая выглядит следующим образом:

    struct Employee {
    int employeeNumber;
    char lastName[50];
    char firstName[50];
    char email[100];
    char phone[50];
    char extension[10];
    char reportsTo[100];
    char jobTitle[50];
    char city[50];
};

Я использую эти библиотеки.

#include <mysql.h>
#include <iostream>
#include <string>

У меня уже есть успешный запрос, так как я проверил его на mySQL но как мне сохранить результат в структуре, о которой я говорил выше?

1 Ответ

0 голосов
/ 21 марта 2020

Используйте MySQL C ++ Connector. Вам могут понадобиться следующие заголовки.

#include "mysql_connection.h"
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>

Как прокомментировал tadman, использование std :: string является предпочтительным.

struct Employee {
  int employeeNumber;
  string lastName;
  /* so on */  
};

Эта вспомогательная функция пригодится для копирования набора результатов вашему сотруднику. struct.

void copyResultsetToEmployee(const std::unique_ptr<sql::ResultSet>& res, Employee& employee)
{    
    employee.employeeNumber= res->getInt("ID");
    employee.lastName = res->getString("Lastname");
    /* so on */      
}

Это используемый случай:

bool getEmployeeFromId(int id, Employee& employee)
{
    if (!sqlConnected) return false;

    std::ostringstream os;
    os << "SELECT * FROM MyTable WHERE "
        << "Id = \"" << id << "\"";

    sql::SQLString cmd = sql::SQLString(os.str().c_str());

    std::unique_ptr<sql::ResultSet>res(stmt->executeQuery(cmd));

    bool present = false;

    do {
        while (res->next()) {
            present = true;
            copyResultsetToEmployee(res, employee);
        }
    } while (stmt->getMoreResults());

    return present;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...