微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

何时使用SQLITE_TRANSIENT与SQLITE_STATIC?

我想在sqlite3中创建/更新文本列.
当我在创建/更新后检索行时,文本是’?’.
然而,整数值被适当地保持.

我的文本语句如下所示:

const char *sql = "INSERT INTO todo(title,description,priority,status,created,expires,posx,posy,updated)"
                  " VALUES('?','?','?');";
if (sqlite3_prepare_v2(database,sql,-1,&insert_statment,NULL) != sqlITE_OK)
    ...
sqlite3_bind_text(update_statment,5,[[dt stringFromDate:self.updated] UTF8String],sqlITE_TRANSIENT);

我试过sqlITE_TRANSIENT以及sqlITE_STATIC.这两种情况似乎都产生了相同的结果(‘?’).当我们将这些文本值传递给相应的sql语句时,我也验证了这些文本值是有效的.

有任何想法吗?

删除“周围的人物?在你的sql字符串.

sqlite_TRANSIENT告诉sqlite复制你的字符串.当您的字符串(缓冲区)在执行查询之前将会消失时使用此选项.

sqlITE_STATIC告诉sqlite,您承诺,传递给该字符串的指针将有效,直到执行查询为止.当您的缓冲区为um,static或至少具有超过绑定的动态范围时,请使用此方法.

原文地址:https://www.jb51.cc/sqlite/197829.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐