2011-02-06 61 views
4

有沒有辦法使用列名訪問MySQL數據庫中的行?MySQL C API - 按列名訪問行

例如,對於第一列而不是使用row[0],您可以使用類似row['authors']的東西。我想直接使用C API編程,而不使用任何包裝器,而不使用C++。

感謝您的幫助!

回答

11

C並沒有真正支持關鍵值數組,例如(我假設你在想)PHP。你可以得到的最接近的東西是獲得一個列名稱數組,搜索它所需的名稱,並使用該索引。例如:

mysql_query(_MySQLConnection, query); 

MYSQL_RES *result = mysql_store_result(_MySQLConnection); 
unsigned int num_fields = mysql_num_fields(result); 
MYSQL_ROW row; 
MYSQL_FIELD *field; 
unsigned int name_field; 
char *field_name = "name"; 

char *headers[num_fields]; 
for(unsigned int i = 0; (field = mysql_fetch_field(result)); i++) { 
    headers[i] = field->name; 
    if (strcmp(field_name, headers[i]) == 0) { 
     name_field = i; 
    } 
} 

while ((row = mysql_fetch_row(result))) { 
    //do something with row[name_field] 
    printf("Name: %s\n", row[name_field]); 
} 

mysql_free_result(result); 
+0

感謝大衛的聰明工作! – ddillert 2011-02-06 01:23:44