我在同一进程(来自不同的线程)中使用多个只读数据库连接到同一个数据库。但是,我有与传递的数据库连接一起使用的静态sqlte3_stmt
语句。
使用不同的数据库连接实例(到同一个只读数据库)重用这种方式的语句是否安全?在实践中,这似乎有效,但我不确定这是否是正确的做法。
答案 0 :(得分:0)
语句始终使用为其准备的连接(在sqlite3_prepare*()
的调用中。无法更改语句的连接。
当您使用来自多个线程的相同语句时,所有线程共享相同的游标,以及相同的连接和相同的事务。这最终会爆发。
如果要保存语句,则必须使用每个连接的语句列表。