MySQL C API - 按列名访问行

时间:2011-02-06 00:18:44

标签: mysql c

有没有办法使用列名访问MySQL数据库中的行?

例如,您可以使用类似row[0]的内容,而不是使用row['authors']作为第一列。我想直接用C API编程而不用任何包装器,而不是用C ++编写。

感谢您的帮助!

1 个答案:

答案 0 :(得分: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);