首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux C 語言操作 MySQL 完整指南:編譯鏈接、字符集配置與中文亂碼解決

     編輯:MySQL 綜合教學

一、環境準備

# 安裝開發庫
$ sudo apt-get install libmysql++-dev
# 複製庫文件到系統路徑(視發行版而定)
$ sudo cp -r /usr/lib/mysql/* /usr/lib/
# 查看編譯鏈接參數
$ mysql_config --cflags --libs

二、建庫建表示例

mysql> CREATE DATABASE TemWet;
mysql> USE TemWet;
mysql> CREATE TABLE monitor (
    Id INT NOT NULL,
    monitor_name VARCHAR(50),
    monitor_com VARCHAR(50),
    PRIMARY KEY (Id)
);

三、C 程式完整範例

#include 
#include 
#include 
#include 

int main() {
    MYSQL mysql;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char sqlcmd[200];
    int t, r;

    mysql_init(&mysql);

    if (!mysql_real_connect(&mysql, "localhost", "root", "root", "sensers", 0, NULL, 0)) {
        fprintf(stderr, "連接失敗: %s\n", mysql_error(&mysql));
        return EXIT_FAILURE;
    }
    puts("資料庫連接成功");

    // 設置字符集,解決中文亂碼
    sprintf(sqlcmd, "SET NAMES utf8");
    mysql_real_query(&mysql, sqlcmd, strlen(sqlcmd));

    sprintf(sqlcmd, "SELECT * FROM senser");
    t = mysql_real_query(&mysql, sqlcmd, strlen(sqlcmd));
    if (t) {
        printf("查詢失敗: %s\n", mysql_error(&mysql));
    } else {
        res = mysql_store_result(&mysql);
        while ((row = mysql_fetch_row(res))) {
            for (t = 0; t < mysql_num_fields(res); t++)
                printf("%s\t", row[t]);
            printf("\n");
            int wet = atoi(row[2]);
            printf("%d\n", wet);
        }
        mysql_free_result(res);
    }
    mysql_close(&mysql);
    mysql_library_end();
    return EXIT_SUCCESS;
}

四、編譯與執行

$ gcc sqltest.c -o sqltest -lmysqlclient
$ ./sqltest

五、字符集配置徹底解決中文亂碼

  1. 編輯 /etc/mysql/my.cnf,在 [mysqld]、[client]、[mysql] 區塊添加:
character-set-server = utf8
collation-server = utf8_general_ci
default-character-set = utf8
  1. 重啟 MySQL:sudo service mysql restart。
  2. 驗證:SHOW VARIABLES LIKE 'character_set_%'; 全部應為 utf8。
  3. 重建庫表並插入中文測試,亂碼問題解決。

關鍵點提示

  • 程式中連接成功後立即執行 SET NAMES utf8,確保通訊字符集一致。
  • 配置文件修改需重啟服務生效。
  • 若仍有亂碼,檢查終端編碼、源文件編碼(建議 UTF-8 無 BOM)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved