在MySql

时间:2016-10-12 14:46:58

标签: mysql sql c mysql-connector

我使用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语句,允许在希望时对返回的列进行排序。

2 个答案:

答案 0 :(得分:0)

我编码已经有很长一段时间了,我很抱歉回答并且没有发表评论(没有足够的分数),但也许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"等等。 (我不确定是否接受仅数字列名。)