0

MySQL Connector/C を使用して MySQL データベースからデータを取得しようとしています。私が受け取るすべてのデータが完全に意味不明であることを除いて、すべて問題ありません:)

これがmysql接続とデータ受信のための私のコードです:

void mysql_connect(HWND hwnd) {

MYSQL mysql;
mysql_init(&mysql);

mysql_real_connect(&mysql, "localhost", "root", "", "thetable", 3306, NULL, 0);

mysql_query(&mysql, "SELECT name, pass FROM users ORDER BY id ASC");

MYSQL_RES *res = mysql_store_result(&mysql);

if (res == NULL) 
{
    wchar_t err[64];
    swprintf(err, 64, L"%p", mysql_error(&mysql));
    MessageBox(NULL, err, L"Error", (UINT) MB_OK | MB_ICONINFORMATION);
    mysql_close(&mysql);
    return;
}

int num_fields = mysql_num_fields(res);

MYSQL_ROW row;

while ((row = mysql_fetch_row(res))) 
{ 
    for(int i = 0; i < num_fields; i++) 
    {
        wchar_t r[128];
        swprintf(r, 128, L"%p", row[i]);
        MessageBox(NULL, r, L"Data", (UINT) MB_OK | MB_ICONINFORMATION);
    } 
}

mysql_free_result(res);
mysql_close(&mysql);

}

無数のマンサイクルのためにインターネットをローミングした後、私はユニコードでコンパイルしているので、ワイド文字から <the-thing-you-convert-it-to> にデータを変換する必要があるという知識を得ました。

現在、すべての MySQL テーブルは utf8_unicode_ci でエンコードされています。

プログラムから受け取ることができる文字列の例: 0108F164

では、適切な方法でデータを取得するにはどうすればよいでしょうか?

ああ、受け取ったデータは ansi でコンパイルすると正しく表示されます。

4

1 に答える 1