在使用C語言備份MySQL數(shù)據(jù)庫時,我們通常需要使用MySQL的C API接口來實現(xiàn)。下面是一個簡單的備份程序:
#include#include int main() { MYSQL *conn; MYSQL_RES *result; MYSQL_ROW row; FILE *fp; // 連接MySQL conn = mysql_init(NULL); if (mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0) == NULL) { printf("Could not connect to MySQL!\n"); return 1; } // 查詢所有數(shù)據(jù) mysql_query(conn, "SELECT * FROM table"); // 保存查詢結(jié)果到文件 fp = fopen("backup.sql", "w"); while ((result = mysql_store_result(conn)) && mysql_num_rows(result) != 0) { while ((row = mysql_fetch_row(result))) { int i; for (i = 0; i< mysql_num_fields(result); i++) { fprintf(fp, "%s,", row[i] ? row[i] : "NULL"); } fprintf(fp, "\n"); } mysql_free_result(result); } // 關(guān)閉MySQL連接和文件 mysql_close(conn); fclose(fp); return 0; }
在這個程序中,我們首先使用mysql_init()函數(shù)初始化了一個MySQL連接對象,然后使用mysql_real_connect()函數(shù)連接到數(shù)據(jù)庫。接著,我們使用mysql_query()函數(shù)執(zhí)行了一個SELECT語句,將查詢結(jié)果保存到了一個MYSQL_RES類型的變量result中。
我們使用mysql_store_result()函數(shù)從結(jié)果集中獲取一個MYSQL_RES類型的變量result,然后使用mysql_num_rows()函數(shù)來判斷結(jié)果集中是否還有更多的行可以取出。在每一行數(shù)據(jù)中,我們使用mysql_fetch_row()函數(shù)獲取一個MYSQL_ROW類型的變量row,然后使用mysql_num_fields()函數(shù)獲取當(dāng)前結(jié)果集的列數(shù)。最后,我們將每一行數(shù)據(jù)寫到backup.sql文件中。
最后,我們使用mysql_close()函數(shù)關(guān)閉了MySQL連接對象,同時也關(guān)閉了文件。