MySQL是一種開源的關系型數據庫管理系統,它可以輕松地存儲和管理大量數據。在C語言中,訪問MySQL數據庫通常使用MYSQL C API。以下是一個簡單的例子,演示了如何使用C語言從MySQL數據庫中讀取數據。
#include <stdio.h> #include <stdlib.h> #include <mysql.h> void finish_with_error(MYSQL *conn){ fprintf(stderr, "%s\n", mysql_error(conn)); mysql_close(conn); exit(1); } int main(){ MYSQL *conn = mysql_init(NULL); if(conn == NULL){ fprintf(stderr, "mysql_init() failed\n"); exit(1); } if(mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0) == NULL){ finish_with_error(conn); } if(mysql_query(conn, "SELECT * FROM table")){ finish_with_error(conn); } MYSQL_RES *result = mysql_store_result(conn); if(result == NULL){ finish_with_error(conn); } int num_fields = mysql_num_fields(result); MYSQL_ROW row; while((row = mysql_fetch_row(result))){ for(int i = 0; i < num_fields; i++){ printf("%s ", row[i] ? row[i] : "NULL"); } printf("\n"); } mysql_free_result(result); mysql_close(conn); exit(0); }
這段代碼首先使用mysql_init()函數初始化MySQL連接對象。然后,使用mysql_real_connect()函數連接到數據庫。如果連接失敗,它將調用finish_with_error()函數,該函數將向標準錯誤流中寫入錯誤信息并退出程序。接下來,使用mysql_query()函數執行SELECT語句。如果查詢失敗,它將再次調用finish_with_error()函數,否則將使用mysql_store_result()函數將結果保存到一個MYSQL_RES結構中。然后,使用mysql_num_fields()函數獲取結果中字段的數量,并使用mysql_fetch_row()函數逐行讀取結果集。最后,使用mysql_free_result()函數和mysql_close()函數釋放資源并關閉連接。