gpt4 book ai didi

c - sqlite 是按引用绑定(bind)还是按值绑定(bind)?

转载 作者:行者123 更新时间:2023-11-30 18:12:30 26 4
gpt4 key购买 nike

当我在 sqlite 中绑定(bind)时,实际发生了什么,或者本质上我是通过引用还是通过值传递?如果我绑定(bind)一个变量,sqlite 会看到变量值的变化还是一次性处理?循环内的绑定(bind)告诉我我滥用了该库,即使我使用 sqlite3_clear_bindings 清除了循环内容末尾的绑定(bind)。绑定(bind)首先不会让我得到任何行,即使绑定(bind)返回 SQLITE_OK。 (是否绑定(bind)0?)

    int cat;
sql = "select x,y,z from table where q = ?"
bind cat (to ?) here
for (cat=0; cat<topcat; cat++) {
// I want (multiple) results for each cat value here
rslt = 0;
while ((rslt != SQLITE_DONE) && (rslt != SQLITE_ERROR)) {
rslt = sqlite3_step(stmt2);
// do column stuff here to fetch values
}
}

程序的另一部分从另一个表中获取所有行,并且 SQL 中没有 where 子句。如果我将其中的位置并绑定(bind)出来,我就可以获得所有行。如果我绑定(bind)到像 3 这样的常量值而不是 cat,那就可以了。

最佳答案

数字总是受值的约束。

字符串和 blob 可以通过引用绑定(bind)(通过使用 SQLITE_STATIC),但这不允许稍后更改长度,并且值本身可能会缓存在其他地方。

如果您想更改该值,您必须再次调用sqlite3_bind_*

此外,只有在调用 sqlite3_reset 之后且再次执行该语句之前才能更改绑定(bind)。

关于c - sqlite 是按引用绑定(bind)还是按值绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35109116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com