当前位置:  开发笔记 > 数据库 > 正文

何时使用SQLITE_TRANSIENT vs SQLITE_STATIC?

如何解决《何时使用SQLITE_TRANSIENTvsSQLITE_STATIC?》经验,为你挑选了1个好方法。

我想在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], -1, SQLITE_TRANSIENT);

我已经尝试过SQLITE_TRANSIENT以及SQLITE_STATIC.两种情况似乎都产生相同的结果('?').我还验证了文本值在传递到适当的sql语句时是有效的.

有任何想法吗?



1> Doug Currie..:

删除'周围的人物?在你的SQL字符串中.

SQLITE_TRANSIENT告诉SQLite复制你的字符串.当你的字符串(缓冲区)在执行查询之前消失时使用它.

SQLITE_STATIC告诉SQLite你保证传递给字符串的指针在执行查询之前一直有效.当缓冲区为,嗯,静态或至少具有超过绑定的动态范围时,请使用此选项.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有