2012-08-17 93 views
3

我正在使用sqlite来存储我的数据。我有两个数据库。在我的应用程序中,每次发出新的请求时,都会将第一个数据库附加到第二个数据库。问题是,如果两个请求到来,它显示数据库已经在使用(它试图附加两次相同的别名'数据库')。我想知道是否有任何方法检查数据库是否附加?如何检查sqlite数据库是否附加?

+0

请更新您使用:) – 2012-08-17 07:23:44

+0

请你展示一些代码语言你的问题/标签,让我们知道你在做什么? – 2012-08-17 07:44:56

+0

我正在执行附加数据库语句(附加数据库expr到dbname“)来附加数据库。问题是第二次当我执行这个查询时我收到错误”db is already in use“。所以,我想检查数据库已经连接或不连接,如果连接,则返回,否则连接数据库 – Sandy 2012-08-17 07:52:40

回答

4
PRAGMA database_list; 

输出一个结果集,其中包含可用数据库的完整列表。第一列是数据库名称,第二列是数据库文件(如果不与文件关联,则为空)。主数据库始终命名为main,临时数据库始终为temp

sqlite> attach "foo.db" as foo; 
sqlite> pragma database_list; 
0|main| 
2|foo|/Users/me/tmp/foo.db 
2

我假设你正在重复使用与数据库相同的连接来处理多个请求。由于连接对象的数据库为attached,因此连接失败的第二个或进一步的请求具有相同的连接。我认为我的解决方案是在建立新连接后立即连接数据库,而不是每次收到请求。