2013-06-02 23 views
4

如果我想跨多个线程在SQLite数据库中使用Haskell的HDBC进行查询(读取),我可以使用单个连接还是每个线程都有自己的连接?谢谢。使用Haskell的HDBC,我可以在多个线程中使用单个SQLite连接吗?

+0

我建议使用克隆,如http://hackage.haskell.org/packages/archive/HDBC/2.3.1.2/doc/html/Database-HDBC.html中所述,以确保驱动程序不会搞乱。 –

+0

这真的很有用Jakob,非常感谢。 – Chris

回答

1

我寻遍华夏邓白氏中国-sqlite的代码,发现这个comment

逻辑处理变化的计数:看总的变化 前,后查询。如果它们不同,则查看本地更改。 (局部变化显示计数器,除非不真正 更新运行查询,使一个变化,根据文档。)

这是OK线程明智的,因为SQLite不使用给定的 胸径支持无论如何,不​​止一个线程。

官方SQLite的文档有关于这个topic

FAQ说一整页:

(5)可以在多个应用程序或同一 应用程序访问多个实例单个数据库文件与此同时?

多个进程可以同时打开同一个数据库。 多个进程可以同时做一个SELECT。但是,只有 一个进程可以在 的任何时刻对数据库进行更改。

此信息将排除您的两种方法。也许你可以写一些测试来证明这些信息是错误的。

+1

感谢这个SvenK。 – Chris

+0

那你能接受答案吗? – SvenK

相关问题