C:遍历SQLite记录并将每个值分配给变量

时间:2014-01-23 08:35:11

标签: sql c sqlite variables

我的表USER包含列ID,NAME和ADDRESS。 e.g。

列ID为1,2 NAME列有Bob,Jane 列ADDRESS有英国,美国

我希望遍历所有记录并将每列保存到数组中。结果将是这样的:

char * NAME [2]; NAME [0]将拥有“Bob”,NAME [1]拥有“Jane”和

char * ADDRESS [2]; ADDRESS [0]会有“UK”,ADDRESS [1]会有“US”。

有人能指出我正确的方向而不是为每个数组条目调用SQL语句吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您从链接到的教程中的SELECT示例开始,则可以将其修改为

struct results {
  size_t num_used;
  char* NAME[SOME_MAX_NUMBER_OF_ROWS_HERE];
  char* ADDRESS[SOME_MAX_NUMBER_OF_ROWS_HERE];
};

然后在堆栈中有一个(num_used设置为0)并将指针传递给sqlite3_exec的参数4。在callback中,然后将参数1转换为指向struct results的指针,将strdup字段转换为results->NAME[results->num_used]等,并在结尾处增加results->num_used。当sqlite3_exec返回时,您应该填写NAMEADDRESS数组。

当然有更好的方法来处理数组,因此您不必预测最大行数等,但这是一个不同的问题。