使用sqlite3_prepare_v2准备的语句可以与不同的连接一起使用吗?

时间:2016-11-13 23:58:20

标签: ios sqlite prepared-statement

我在同一进程(来自不同的线程)中使用多个只读数据库连接到同一个数据库。但是,我有与传递的数据库连接一起使用的静态sqlte3_stmt语句。

使用不同的数据库连接实例(到同一个只读数据库)重用这种方式的语句是否安全?在实践中,这似乎有效,但我不确定这是否是正确的做法。

1 个答案:

答案 0 :(得分:0)

语句始终使用为其准备的连接(在sqlite3_prepare*()的调用中。无法更改语句的连接。

当您使用来自多个线程的相同语句时,所有线程共享相同的游标,以及相同的连接和相同的事务。这最终会爆发。

如果要保存语句,则必须使用每个连接的语句列表。