ODBC(Open Database Connectivity)是微軟公司所開發的組件,它允許不同的數據庫系統應用使用統一的調用方法和API訪問數據庫。對于使用C語言開發應用的開發者來說,ODBC是連接和操作數據庫的最佳利器之一。下面介紹如何在C語言環境下使用ODBC連接MySQL數據庫。
首先要安裝MySQL ODBC驅動,下載地址可以在MySQL官網上找到。安裝完驅動之后,就可以使用ODBC API進行連接并進行數據庫操作了。
#include <sql.h> #include <sqlext.h> #include <stdio.h> int main() { SQLHENV env; SQLHDBC dbc; SQLHSTMT stmt; SQLRETURN ret; // 初始化ODBC環境句柄 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); // 初始化數據庫連接句柄 SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); SQLDriverConnect(dbc, NULL, (SQLCHAR*)"DSN=mysql-odbc;UID=root;PWD=password;", SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE); // 準備SQL語句 SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt); SQLPrepare(stmt, (SQLCHAR*)"SELECT * FROM table", SQL_NTS); SQLExecute(stmt); // 獲取查詢結果 while (SQLFetch(stmt) == SQL_SUCCESS) { SQLINTEGER id; SQLCHAR name[20]; SQLLEN name_len = 0; SQLGetData(stmt, 1, SQL_C_SLONG, &id, 0, NULL); SQLGetData(stmt, 2, SQL_C_CHAR, name, sizeof(name), &name_len); printf("id: %d, name: %.*s\n", id, name_len, name); } SQLFreeHandle(SQL_HANDLE_STMT, stmt); SQLDisconnect(dbc); SQLFreeHandle(SQL_HANDLE_DBC, dbc); SQLFreeHandle(SQL_HANDLE_ENV, env); return 0; }
以上代碼使用MySQL ODBC驅動連接數據庫并查詢數據,需要根據實際環境配置DSN、UID和PWD。可以看到ODBC API非常強大,可以用來創建和執行SQL語句、操作數據庫事務、獲取錯誤信息等。學會使用ODBC API可以讓C語言開發者輕松地連接和操作各種數據庫系統,是一項非常值得學習的技能。