在使用C語言查詢MySQL數據庫時,有時候會出現數據存放錯誤的情況。這時候我們需要通過代碼進行排查。
MYSQL_RES *result; MYSQL_ROW row; //連接數據庫 MYSQL *conn = mysql_init(NULL); if (!mysql_real_connect(conn, "localhost", "root", "password", "mydb", 0, NULL, 0)) { printf("Connection Error\n"); return; } //查詢數據 if (mysql_query(conn, "SELECT * FROM mytable")) { printf("Query Error\n"); return; } //獲取查詢結果 result = mysql_store_result(conn); //遍歷數據 while ((row = mysql_fetch_row(result))) { //獲取第一列 int id = atoi(row[0]); //獲取第二列 char *name = row[1]; //獲取第三列 double score = atof(row[2]); //輸出數據 printf("id=%d, name=%s, score=%.2f\n", id, name, score); } //釋放結果 mysql_free_result(result); //關閉連接 mysql_close(conn);
在以上代碼中,我們使用了mysql_store_result()來獲取查詢結果,然后通過mysql_fetch_row()遍歷結果集,逐一獲取每一行數據的值。在獲取數據值的過程中,需要注意數據類型的匹配。比如,在獲取double類型的數據時,要使用atof()函數轉換為double類型。
如果數據存放錯誤,可以通過檢查數據類型是否匹配,以及使用mysql_real_escape_string()函數來預處理數據,防止SQL注入等方式進行解決。