何时使用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或至少具有超过绑定的动态范围时,请使用此方法.

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能