如何使用'union all'子句从sqlite3预处理语句中获取数据

时间:2012-09-27 15:07:42

标签: c sqlite

我有三个SELECT语句与UNION ALL相关联。我设置了复合语句,以便sqlite3_prepare_v2()为我准备结果行。如果我要使用结果数据,我可以使用for()循环吗?

int i;
for(i = 0; sqlite3_step(res) == SQLITE_ROW; i++) {
    if (i == 0) data1 = sqlite3_column_int(res,0);
    else if (i == 1) data2 = sqlite3_column_int(res,0);
    else data3 = sqlite3_column_int(res,0);
}

这应该有效吗?我试过了,但它给了我垃圾数据。有没有其他方法来实现这个?

1 个答案:

答案 0 :(得分:0)

这很有效。垃圾数据完全来自其他地方。您可以使用它来缩短您键入的代码量,但请注意,您可以使用此代码的数量有限制。

附加信息:您可以使用UNION在每个表中使用相同的WHERE参数进行选择,假设您让用户输入两个数据参数,并且有四个表使用这些参数,只有一些额外的价值不同。假设我想获得该附加列的值。我将让用户输入与我所需输出所属的表不同的内容。使用SELECT语句与UNION复合,可以比实际比较和冗长的迭代更容易地选择所需的输出。