在使用 C 語言與 MySQL 進行數據交互的過程中,常常會遇到需要判斷某個 id 值在數據庫中是否已經存在的情況。
常規的做法是使用 SELECT 語句查詢該 id 是否已經存在,但這種做法效率較低,對數據庫的造成的負擔也較大。
另一種更有效的方法是先使用 SELECT COUNT(*) 語句查詢該 id 值在數據庫中出現的次數,由于該語句只返回一個結果集,因此效率較高。
MYSQL_RES *result; MYSQL_ROW row; char query[100]; sprintf(query, "SELECT COUNT(*) FROM table WHERE id='%s'", id); if(mysql_query(conn, query)) { printf("Error: %s\n", mysql_error(conn)); } result = mysql_store_result(conn); if(result == NULL) { printf("Error: %s\n", mysql_error(conn)); } while((row = mysql_fetch_row(result)) != NULL) { int count = atoi(row[0]); if(count == 0) { //id不存在 } else { //id已存在 } } mysql_free_result(result);
上述代碼中,sprintf 函數將 SQL 查詢語句與 id 值組合成一個完整的 SQL 語句,mysql_query 函數執行該語句并返回結果。
接著,mysql_store_result 函數將結果集存儲在 result 指針中,mysql_fetch_row 函數讀取結果集中的行,將其轉化為一個字符串數組,通過 atoi 函數將字符串形式的 count 值轉換為整型。
最后,通過判斷 count 的值是否為 0,即可確定該 id 值在數據庫中是否已存在。