C++函数mysql_use_result获取mysql数据库中的数据中文显示为“?”

这里写图片描述

数据库编码

在这里就假装都已经能够访问数据库并且获得数据,只是获得的数据中,中文显示为“?”

解决措施:在使用数据之前先加上如下代码

char *sql="set names utf8;";
mysql_query(&mysql_conn,sql);

具体位置可以看下面的例子

访问数据库的代码如下

#ifndef __LCC__
#define __LCC__
#endif

#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"

int main(int argc, char **argv) {
    MYSQL mysql_conn; /* Connection handle */
    MYSQL_RES *mysql_result; /* Result handle */
    MYSQL_ROW mysql_row; /* Row data */
    int f1, f2, num_row, num_col;
    if (!mysql_set_character_set(&mysql_conn, "utf8"))
    {
        printf("New client character set: %s\n", mysql_character_set_name(&mysql_conn));
    }
    if (mysql_init(&mysql_conn) != NULL) {
        if (mysql_real_connect(
                               &mysql_conn, "localhost", "root",
                               "密码", "数据库名称", MYSQL_PORT, NULL, 0) != NULL){
//            char *sql="set names utf8;";
//            mysql_query(&mysql_conn,sql);
            if (mysql_query(
                            &mysql_conn,
                            "select * from EMPLOYEE limit 10") == 0) {
                mysql_result = mysql_store_result(&mysql_conn);
                num_row = mysql_num_rows(mysql_result);
                num_col = mysql_num_fields(mysql_result);

                for (f1 = 0; f1 < num_row; f1++) {
                    mysql_row = mysql_fetch_row(mysql_result);

                    for (f2 = 0; f2 < num_col; f2++)
                        printf(
                               "[Row %d, Col %d] ==> [%s]\n",
                               f1+1, f2+1, mysql_row[f2]);
                }
            } else
                printf("Query fails\n");
        } else {
            int i = mysql_errno(&mysql_conn);
            //const *s = mysql_error(&mysql_conn);
            //printf("Connection fails(ERROR %d): %s\n", i, s);
        }
    } else
        printf("Initialization fails\n");

    mysql_free_result(mysql_result);
    mysql_close(&mysql_conn);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章