MySQL和ODBC是兩種不同的技術。MySQL是一種數據庫技術,而ODBC是一種數據訪問技術。雖然它們都有涉及數據庫和數據的操作,但其實兩者還是有很大的不同之處。
MySQL是一種關系數據庫管理系統,它使用結構化查詢語言(SQL)來訪問和管理數據。MySQL是一個開放源代碼的軟件,在開發和管理方面非常靈活。它可以被使用在各種不同的應用程序中,包括網站,企業級系統和桌面應用程序等。
ODBC,又稱數據操作性工具之開放源代碼,是一種用于訪問數據的API,它為不同的數據源(如MySQL)提供了一個標準接口。ODBC允許不同的應用程序鏈接到不同的數據源,而不需要針對每個單獨的數據源編寫不同的訪問代碼。
MYSQL示例代碼: #include#include int main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; // 服務端地址 char *user = "root"; // 用戶名 char *password = "123456"; // 密碼 char *database = "mysql"; // 數據庫名 conn = mysql_init(NULL); // 初始化MySQL連接 // 開啟MySQL連接 if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } // 執行SQL語句 if (mysql_query(conn, "show tables")) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } res = mysql_use_result(conn); // 獲取查詢結果 // 輸出查詢結果 while ((row = mysql_fetch_row(res)) != NULL) { printf("%s\n", row[0]); } mysql_free_result(res); // 釋放結果集 // 關閉連接 mysql_close(conn); return 0; }
ODBC示例代碼: #include#include #include #include int main() { SQLHENV env; SQLHDBC dbc; SQLHSTMT stmt; SQLRETURN ret; SQLCHAR *connString = (SQLCHAR*)"DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; DATABASE=mysql; USER=root; PASSWORD=123456;"; // 初始化ODBC環境 ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); ret = SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); // 連接數據庫 ret = SQLDriverConnect(dbc, NULL, connString, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE); // 創建查詢語句 ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt); SQLCHAR *query = (SQLCHAR*)"SELECT * FROM user"; ret = SQLExecDirect(stmt, query, SQL_NTS); // 獲取查詢結果 SQLCHAR col1[256]; SQLINTEGER col2; while ((ret = SQLFetch(stmt)) == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) { SQLGetData(stmt, 1, SQL_CHAR, col1, sizeof(col1), NULL); SQLGetData(stmt, 2, SQL_INTEGER, &col2, 0, NULL); printf("%s %d\n", col1, col2); } // 釋放資源 SQLFreeHandle(SQL_HANDLE_STMT, stmt); SQLDisconnect(dbc); SQLFreeHandle(SQL_HANDLE_DBC, dbc); SQLFreeHandle(SQL_HANDLE_ENV, env); return 0; }
以上兩個示例都分別展示了如何使用MySQL和ODBC訪問數據庫。可以看到,雖然兩者的代碼語法都不太一樣,但都能完成對數據庫的操作。