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

来源:互联网 发布:mac版c4d 编辑:程序博客网 时间:2024/05/20 23:37

这里写图片描述

数据库编码

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

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

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;}
0 0