在C語言中使用ODBC連接MySQL數據庫非常方便。ODBC即為Open Database Connectivity,即開放數據庫互連性,是Microsoft公司提出的數據庫標準接口。通過ODBC,不僅能夠在Windows操作系統上連接各種數據庫,還能在多種操作系統平臺上連接相應的數據庫。
在使用ODBC連接MySQL數據庫前,我們需要先安裝ODBC驅動程序。推薦的ODBC驅動程序是Connector/ODBC,可以在MySQL官網上免費下載。
下面是一個簡單的示例代碼,演示了如何使用ODBC連接MySQL數據庫:
#include#include #include #include int main() { SQLHENV env; // Environment handle SQLHDBC dbc; // Connection handle SQLHSTMT stmt; // Statement handle char *dsn = "MySQL ODBC 8.0 Driver"; char *uid = "root"; char *pwd = "password"; SQLRETURN ret; // Allocate and initialize environment handle SQLAllocHandle(SQL_HANDLE_ENV, NULL, &env); SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); // Allocate and initialize connection handle SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); ret = SQLConnect(dbc, (SQLCHAR*)dsn, SQL_NTS, (SQLCHAR*)uid, SQL_NTS, (SQLCHAR*)pwd, SQL_NTS); if (!SQL_SUCCEEDED(ret)) { printf("SQLConnect error\n"); exit(-1); } // Allocate and initialize statement handle SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt); ret = SQLExecDirect(stmt, (SQLCHAR*)"SELECT COUNT(*) FROM mytable", SQL_NTS); if (SQL_SUCCEEDED(ret)) { SQLINTEGER cnt; SQLBindCol(stmt, 1, SQL_C_ULONG, &cnt, 0, NULL); SQLFetch(stmt); printf("Count: %d\n", cnt); } else { printf("SQLExecDirect error\n"); } // Clean up resources SQLFreeHandle(SQL_HANDLE_STMT, stmt); SQLDisconnect(dbc); SQLFreeHandle(SQL_HANDLE_DBC, dbc); SQLFreeHandle(SQL_HANDLE_ENV, env); return 0; }
在這個示例中,我們首先使用SQLAllocHandle函數分別分配了環境句柄、連接句柄和語句句柄。然后通過SQLSetEnvAttr函數設置ODBC版本為3.x版本,以確保API的向后兼容性。接著使用SQLConnect函數連接MySQL數據庫,并檢查連接是否成功。最后使用SQLExecDirect函數執行一個簡單的SELECT語句,獲取mytable表的記錄數,并打印到控制臺上。
以上就是使用ODBC連接MySQL數據庫的簡單示例。如果需要更多的ODBC API,可以參考Microsoft官方文檔。