C和MySQL數據庫的交互可以通過一些第三方庫來實現,例如libmysqlclient、ODBC和JDBC等。其中,libmysqlclient是MySQL官方提供的C語言接口庫,可以通過該庫來連接和操作MySQL數據庫。
C語言中連接MySQL數據庫的基本流程如下:
MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mysql, "localhost", "username", "password", "database_name", port, NULL, 0);
上述代碼中,首先通過mysql_init()函數來初始化MYSQL對象,然后通過mysql_real_connect()函數來連接MySQL數據庫。其中,"localhost"代表主機名,"username"和"password"分別代表用戶名和密碼,"database_name"代表要連接的數據庫名,port代表端口號,"0"代表無特殊配置。
連接MySQL數據庫之后,還需要通過mysql_query()函數來執行SQL語句,如下所示:
MYSQL_RES *result = NULL; MYSQL_ROW row; mysql_query(&mysql, "SELECT * FROM table_name"); result = mysql_store_result(&mysql); while ((row = mysql_fetch_row(result))) { printf("%s, %s\n", row[0], row[1]); } mysql_free_result(result);
上述代碼中,通過mysql_query()函數執行SELECT語句,并通過mysql_store_result()函數將查詢結果保存到MYSQL_RES對象中,最后通過mysql_fetch_row()函數獲取每一行數據并輸出。另外,需要注意在使用完MYSQL_RES對象后,需要使用mysql_free_result()函數釋放資源。
除了SELECT語句,還可以通過庫函數來執行INSERT、UPDATE、DELETE等操作。例如,對于INSERT語句,可以通過mysql_real_query()函數來執行:
mysql_real_query(&mysql, "INSERT INTO table_name (col1, col2) VALUES ('value1', 'value2')");
上述代碼中,通過mysql_real_query()函數執行INSERT語句,將數據插入到table_name表中。
綜上所述,通過C語言庫函數連接和操作MySQL數據庫非常方便,能夠實現豐富的數據庫交互功能。