sqlite 判断数据表是否存在 失效的一种情况

文章描述了一个在主项目下挂多个子项目且使用不同数据库的情况,作者发现将判断表是否存在和建表的代码放入线程后,在线程内查询sqlite_master时总是返回表不存在。推测可能是因为在多项目场景下,不同数据库导致查询结果不一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提条件
1.主项目下挂在了多个子项目 主项目 和 各个子项目又用的是不同的数据库
2.将判断是否存在的代码 和 建表代码都放进了线程中

Thread t = new Thread(SqLiteUse.CreatePianChaTable);
                t.Start();

检测数据表是否存在的语句没问题

cmd.CommandText = "SELECT count(*) from sqlite_master where type='table' and name='" + tableName +"'; ";

经过测试 拿到线程外可以正常检测到表是否被创建
但是放在线程里 就会一直返回表不存在

我猜测出现的原因是
在多个项目的情况下 ,由于有多个数据库文件,造成了 要查询的sqlite_master 中 根本就不存在我要检测是否存在的数据表

因为我在单独运行这个子项目的时候,就算在线程里也是可以正常检测数据表是否存在的
这个坑踩的很难受,记录一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值