數(shù)據(jù)庫連接是程序設(shè)計中的一項重要操作,在我們的開發(fā)過程中常常需要連接數(shù)據(jù)庫來獲取或者更新一些數(shù)據(jù),那么我們該如何使用C語言來連接MySQL數(shù)據(jù)庫呢?下面我們來介紹一下使用C ODBC來連接MySQL數(shù)據(jù)庫的方法。
#include <odbcinst.h> #include <sqltypes.h> #include <sql.h> #include <sqlext.h> int main() { SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; SQLRETURN retcode; SQLCHAR* dsn = (SQLCHAR*)"MySQL ODBC 8.0 ANSI Driver"; SQLCHAR* uid = (SQLCHAR*)"root"; SQLCHAR* pwd = (SQLCHAR*)"password"; retcode = SQLAllocHandle (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { printf("Error in SQLAllocHandle (SQL_HANDLE_ENV)\n"); return -1; } retcode = SQLSetEnvAttr (henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { printf("Error in SQLSetEnvAttr\n"); SQLFreeHandle(SQL_HANDLE_ENV, henv); return -1; } retcode = SQLAllocHandle (SQL_HANDLE_DBC, henv, &hdbc); if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { printf("Error in SQLAllocHandle (SQL_HANDLE_DBC)\n"); SQLFreeHandle(SQL_HANDLE_ENV, henv); return -1; } retcode = SQLConnect (hdbc, dsn, SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS); if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { printf("Error in SQLConnect\n"); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return -1; } retcode = SQLAllocHandle (SQL_HANDLE_STMT, hdbc, &hstmt); if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { printf("Error in SQLAllocHandle (SQL_HANDLE_STMT)\n"); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return -1; } printf("Connected to MySQL database.\n"); SQLFreeHandle(SQL_HANDLE_STMT, hstmt); SQLDisconnect (hdbc); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; }
這段代碼中,我們首先定義了需要使用的ODBC庫和MySQL的用戶名和密碼等信息。然后我們使用SQLAllocHandle()函數(shù)來申請一個ODBC環(huán)境句柄和一個數(shù)據(jù)庫連接句柄。接著使用SQLConnect()函數(shù)來連接到MySQL數(shù)據(jù)庫,在連接成功后,我們可以使用SQLAllocHandle()函數(shù)來申請一個SQL語句操作句柄來進(jìn)行數(shù)據(jù)庫的操作。最后,我們使用SQLDisconnect()函數(shù)來斷開數(shù)據(jù)庫連接,同時使用SQLFreeHandle()函數(shù)來釋放使用過的ODBC句柄。
通過這種方式,我們就可以在C語言中使用ODBC來連接MySQL數(shù)據(jù)庫,并進(jìn)行相應(yīng)的數(shù)據(jù)讀寫操作了。
上一篇c 使用mysql連接池
下一篇mysql liunx