首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言連接 Access 數據庫實戰:ODBC 連接字串配置指南

     編輯:關於C

對比 MySQL 配置繁瑣,Access 搭配 ODBC 連接極其簡單,適合輕量級桌面應用。本文記錄從連接字串修改到建表測試的完整流程,助你快速上手。

核心修改:連接字串


// 原 MySQL 連接字串
SQLCHAR ConnStrIn[MAXBUFLEN] = 
    "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=test;CharSet=gbk;";

// 改為 Access 連接字串
SQLCHAR ConnStrIn[MAXBUFLEN] = 
    "Driver={Microsoft Access Driver (*.mdb)};Dbq=//mydatabase.mdb;Uid=Admin;Pwd=;CharSet=gbk;";

關鍵參數說明

前置準備清單

  1. 安裝 Office(自帶 Access Driver)或單獨安裝 Microsoft Access Database Engine
  2. 建立 .mdb 文件(可用 Access 打開建表,或代碼建表)
  3. 確認驅動名稱:控制面板 → 管理工具 → ODBC 數據源 → 驅動程式 查看

配套 SQL 操作必須匹配表結構


// 代碼中的 SQL
result = SQLPrepare(hstmt, (SQLCHAR*)"insert into T_Person(FAge,FName) values(20,'kider')", SQL_NTS);

⚠️ 必須預先在 Access 中建立:

  • 表名:T_Person
  • 欄位:FAge (數值)、FName (文本)

否則 SQLExecute 會報錯:Table 'T_Person' not found 或 Field 'FAge' not found。

完整流程最小化範例

#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <stdio.h>

#define MAXBUFLEN 1024

int main() {
    SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt;
    SQLRETURN ret;
    SQLCHAR ConnStrIn[MAXBUFLEN] = 
        "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\test.mdb;Uid=Admin;Pwd=;";
    
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
    SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
    SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
    
    ret = SQLDriverConnect(hdbc, NULL, ConnStrIn, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);
    if(!SQL_SUCCEEDED(ret)) { printf("連接失敗\n"); return 1; }
    
    SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
    SQLExecDirect(hstmt, (SQLCHAR*)"CREATE TABLE T_Person (FAge INT, FName TEXT(50))", SQL_NTS);
    SQLExecDirect(hstmt, (SQLCHAR*)"INSERT INTO T_Person VALUES (25, 'Alice')", SQL_NTS);
    
    printf("插入成功\n");
    
    SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
    SQLDisconnect(hdbc);
    SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
    SQLFreeHandle(SQL_HANDLE_ENV, henv);
    return 0;
}

常見問題排查

參數含義範例
DriverODBC 驅動名稱(需系統已安裝){Microsoft Access Driver (*.mdb)}
Dbq數據庫文件路徑C:\\data\\mydb.mdb 或 //mydatabase.mdb
Uid/Pwd用戶名/密碼(Access 常為空)Admin / (空)

進階建議

  • 使用參數化查詢(SQLBindParameter)防注入
  • 連接池複用 SQLAllocHandle/SQLFreeHandle
  • 大數據量考慮遷移 SQLite / SQL Server Express
  • 64 位程式需安裝 64 位 Access Engine
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
錯誤原因解決
Driver not found未安裝 Access Driver安裝 Access Database Engine 2010/2016
Could not find fileDbq 路徑錯誤用絕對路徑,雙反斜桿或正斜桿
Data type mismatch欄位類型不符檢查建表 SQL 與插入值類型
Syntax error in INSERT保留字衝突欄位名加方括號 [FAge]