Запрос к базе данных MySQL в C ++ не возвращает все значения - PullRequest
0 голосов
/ 15 февраля 2020

Для меня это немного новый топи c. Я учусь подключаться к SQL базам данных через C ++. Прямо сейчас у меня есть таблица, которая используется для подключения к локальному SQL серверу. На сервере есть схема, содержащая основные c данные мусора, которые использовались для лаборатории в начале семестра (я использовал данные, чтобы выяснить другой синтаксис SQL)

В этом случае используется сервер MySql Workbench. Нам были даны некоторые базовые c инструкции по настройке Visual Studio для связи с этой базой данных sql и данными запросов. Хотя это работает в некоторой степени, кажется, отказывается возвращать полную таблицу данных. В SQL, если я хочу запросить таблицу с именем offices, где officeCode, который я хочу просмотреть, равен '1', я просто набрал бы SELECT * FROM offices WHERE officeCode = 1;

этот же запрос на визуальном Студия, кажется, возвращает только все, кроме первого ряда. Даже если я расширяю его, чтобы он не использовал ограничение «где», он все равно отказывается возвращать самую первую запись в таблицу. Я не уверен, правильно ли я настроил код, или, может быть, он не подключается к моей базе данных правильно, кто-нибудь еще замечает то, чего у меня нет?

#include <mysql.h>
#include <iostream>
#define CRT_SECURE_NO_WARNINGS
using namespace std;
int main() {
    MYSQL* conn;
    MYSQL_ROW row;
    MYSQL_RES* res;
    conn = mysql_init(0);
    conn = mysql_real_connect(conn, "127.0.0.1", "<ommittedUser>", "<omittedPass>", "new_schema", 3306, nullptr, 0);

    if (conn) {
        cout << "successful connection to database" << endl;
    }
    else {
        cout << "Connection failed!" << mysql_error(conn) << endl;
    }
    string query = "SELECT * FROM offices WHERE officeCode = 1 ;"; //doesnt detect the first row
    const char* q = query.c_str();
    int exequery;
    exequery = mysql_query(conn, q);

    if (!exequery) {
        cout << "The query executed successfully with no error." << endl;
        res = mysql_store_result(conn);
        if (mysql_fetch_row(res) == nullptr) {
            cout << "result is empty" << endl;
        }
        else {
            while (row = mysql_fetch_row(res)) {
                printf("OfficeCode: %s, city: %s\n", row[0], row[1]);
            }
        }
    }
    else {
        cout << "Error message: " << mysql_error(conn) <<":" <<mysql_errno(conn) << endl;
    }
delete conn;
}
...