數據庫編碼
在這裏就假裝都已經能夠訪問數據庫並且獲得數據,只是獲得的數據中,中文顯示爲“?”
解決措施:在使用數據之前先加上如下代碼
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;
}