我使用MySql C API并进行各种查询后发现,每次查看列排序都非常不方便。此外,在查询编辑的情况下,这种方法很容易出错。
我可以通过查询每个列序数来分配吗?
如果没有,是否有更方便的方法通过C API检索结果? (当前使用mysql_fetch_row
并使用下标运算符访问列id。)
请注意,我没有阅读类似的问题Is it possible to sort the order in which columns are returned in a mysql SELECT statement?,但我发现它与我的情况不同,因为我需要分配任意数量的列序号。
修改
现状
查询:SELECT A.a, A.b, A.c FROM tbl1 A INNER JOIN tbl2 B ON B.id = A.B_id
c code:
...
MYSQL_ROW row = mysql_fetch_row(result);
unsigned long *lengths = mysql_fetch_lengths(result);
...
int field1 = atoi(row[0]);
memcpy(row[1], field2, lengths[1]);
..continue for each row..
期望的情况
查询:SELECT A.a ORDINAL 1, A.b ORDINAL 2, A.c ORDINAL 3 FROM tbl1 A INNER JOIN tbl2 B ON B.id = A.B_id
c代码:与上述相同。
其中ORDINAL
语句是伪SQL语句,允许在希望时对返回的列进行排序。
答案 0 :(得分:0)
我编码c已经有很长一段时间了,我很抱歉回答并且没有发表评论(没有足够的分数),但也许mysql_fetch_field_direct()
可能有帮助吗?
答案 1 :(得分:0)
我不确定你想要什么,但也许这有效:
SELECT A.a AS 1, A.b AS 2, A.c AS 3 FROM tbl1 A INNER JOIN tbl2 B ON B.id = A.B_id
这将返回您想要的字段" 1"," 2"," 3"等等。 (我不确定是否接受仅数字列名。)