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

Linux 下整合 MySQL 資料庫存取:架構、API 選擇與開發範例

     編輯:MySQL 綜合教學

Web 應用若需儲存大量狀態資訊 (如電子商務),成熟的關聯式資料庫不可或缺。MySQL 以快速、多執行緒、支援 ANSI SQL/ODBC、免費開源 (GPL) 成為 Linux 平台首選。本文概述 MySQL 架構、C API 與腳本語言整合方式,並提供 C++ 與 Tcl 簡易範例。

為何選擇獨立資料庫而非自製儲存?

  • 提供 ACID 交易、並行控制、備份還原、權限管理等企業級功能。
  • 開發者可專注業務邏輯,避免重造輪子。
  • 成熟生態:豐富的語言驅動、管理工具、監控方案。

MySQL 架構總覽

  • Server (mysqld):單一進程管理多個資料庫,每庫含多張表,表由欄位 (型別: 整數、浮點、字串、日期、BLOB) 與列組成。
  • Client/Server 模型:Client 透過 TCP/IP、Unix Socket 或 Named Pipe 送出 SQL 請求,Server 解析、優化、執行並回傳結果集。
  • 儲存引擎:MyISAM (預設, 非交易)、InnoDB (交易安全, 行鎖, 外鍵) 等可插拔。

C API 核心流程 (mysql.h / libmysqlclient)


MYSQL *conn = mysql_init(NULL);
mysql_real_connect(conn, "localhost", "user", "pass", "db", 3306, NULL, 0);
mysql_query(conn, "SELECT * FROM products");
MYSQL_RES *res = mysql_store_result(conn);
while (MYSQL_ROW row = mysql_fetch_row(res)) {
    // 處理 row[0], row[1]...
}
mysql_free_result(res);
mysql_close(conn);

腳本語言整合:Perl DBI / PHP / Python / Tcl

Linux 發布版多預裝 Perl/Python,MySQL 驅動通常以 C API 為基底封裝:

  • PHP:mysqli 或 PDO_MySQL 擴充模組。
  • Perl:DBD::mysql 配合 DBI。
  • Python:mysqlclient (C 綁定) 或 PyMySQL (純 Python)。
  • Tcl:mysqltcl 擴充套件。

簡易範例:Tcl 查詢商品價格


package require mysqltcl
set db [mysqlconnect -host localhost -user user -password pass -db shop]
set res [mysqlsel $db "SELECT name, price FROM products WHERE price < 100"]
foreach row $res {
    puts "Product: [lindex $row 0], Price: [lindex $row 1]"
}
mysqlclose $db

簡易範例:C++ 封裝類別


class MySQLDB {
    MYSQL *conn;
public:
    MySQLDB() : conn(mysql_init(nullptr)) {}
    bool connect(const char* h, const char* u, const char* p, const char* d) {
        return mysql_real_connect(conn, h, u, p, d, 3306, nullptr, 0);
    }
    bool query(const char* sql, std::vector>& out) {
        if (mysql_query(conn, sql)) return false;
        MYSQL_RES *res = mysql_store_result(conn);
        int fields = mysql_num_fields(res);
        MYSQL_ROW row;
        while ((row = mysql_fetch_row(res))) {
            std::vector record;
            for (int i=0; i

交易處理

InnoDB 支援交易:START TRANSACTION / COMMIT / ROLLBACK。確保多步操作 (如扣款+扣庫存) 原子性。發生崩潰時透過 Redo/Undo Log 自動恢復一致性。

小結

MySQL 在 Linux 上提供豐富的程式介面,從底層 C API 到高階腳本語言驅動皆成熟穩定。選擇適合專案技術棧的驅動,善用連線池、預處理陳述式與交易,即可構建高效能、可靠的資料存取層。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved