我有三个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);
}
这应该有效吗?我试过了,但它给了我垃圾数据。有没有其他方法来实现这个?
答案 0 :(得分:0)
这很有效。垃圾数据完全来自其他地方。您可以使用它来缩短您键入的代码量,但请注意,您可以使用此代码的数量有限制。
附加信息:您可以使用UNION
在每个表中使用相同的WHERE
参数进行选择,假设您让用户输入两个数据参数,并且有四个表使用这些参数,只有一些额外的价值不同。假设我想获得该附加列的值。我将让用户输入与我所需输出所属的表不同的内容。使用SELECT
语句与UNION
复合,可以比实际比较和冗长的迭代更容易地选择所需的输出。