MySQL游標是一種對數據庫中數據進行處理的方法,它允許對查詢結果集進行迭代,從而使得代碼可以更加靈活地處理數據。在C程序中,我們可以使用MySQL的C API來利用游標操作MySQL數據庫,下面我們介紹一下如何使用游標。
#include <my_global.h> #include <mysql.h> int main(int argc, char *argv[]) { MYSQL *conn; MYSQL_RES *result; MYSQL_ROW row; MYSQL_FIELD *field; MYSQL_STMT *stmt; char *query = "SELECT * FROM mytable"; int i, num_fields; my_ulonglong num_rows; // 連接MySQL數據庫 conn = mysql_init(NULL); mysql_real_connect(conn, "localhost", "username", "password", "dbname", 0, NULL, 0); // 查詢數據 stmt = mysql_stmt_init(conn); mysql_stmt_prepare(stmt, query, strlen(query)); mysql_stmt_execute(stmt); result = mysql_stmt_result_metadata(stmt); num_fields = mysql_num_fields(result); // 輸出表頭 printf("|"); while ((field = mysql_fetch_field(result))) { printf(" %s |", field->name); } printf("\n"); // 使用游標迭代數據 mysql_stmt_store_result(stmt); num_rows = mysql_stmt_num_rows(stmt); mysql_stmt_bind_result(stmt, row); for (i = 0; i< num_rows; i++) { mysql_stmt_fetch(stmt); printf("| "); for (int j = 0; j< num_fields; j++) { printf("%s | ", row[j]); } printf("\n"); } mysql_free_result(result); mysql_stmt_close(stmt); mysql_close(conn); return 0; }
以上代碼實現了查詢MySQL數據庫中mytable表中的所有數據,并輸出表格形式的結果,其中使用了游標進行數據的迭代處理。需要注意的是,在使用游標時,我們需要先通過mysql_stmt_store_result()將查詢結果集緩存到本地,然后再使用mysql_stmt_bind_result()綁定結果集的行,最后使用mysql_stmt_fetch()獲取一行數據,對其進行處理。在使用完游標后,我們需要通過mysql_free_result()釋放結果集對象。