SQLite多线程共用 一个connection的问题

发布于 2021-12-01 19:17:47 字数 182 浏览 885 评论 13

因SQLite的便捷,方便项目到处可以直接跑,因此小弟选用了SQLite,但最近出现一个问题额,当一个db文件,多线程既有查询,又有更新的时候,因为建立连接太耗时,因此就用一个连接(暂时没有用线程池)。然后就蛋疼了,一直出问题:unable to open database file  ,网上是说SQLite不是线程安全的,哪位帮忙解答下!谢谢。。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(13

眼眸 2021-12-01 21:21:26

是不是这样?

conn = sqlite3.connect(dbfile, check_same_thread=False)

伴我心暖 2021-12-01 21:21:21

回复
能 建立多个conn,

无边思念无边月 2021-12-01 21:21:21

麻烦帮忙看下下面代码是不是问题出在哪里 ?

等你爱我 2021-12-01 21:21:21

SQLite好像只能一个连接吧??能不能同时建立多个连接呢?

疑心病 2021-12-01 21:21:21
public synchronized static void update(List<DownloadBean> beans) {
		Connection conn = Database.getInstance().getConnection("0.db");
		PreparedStatement stm = null;
		try {
			stm = conn.prepareStatement("update download set status=?,exception=?,time=? where id=?");
			if (beans != null && beans.size() > 0) {
				for (DownloadBean bean : beans) {
					stm.setInt(1, bean.getStatus());
					if (bean.getException() == null) {
						stm.setString(2, "");
					} else {
						stm.setString(2, bean.getException());
					}
					stm.setString(3, bean.getTime());
					stm.setString(4, bean.getId());
					stm.addBatch();
				}
				stm.executeBatch();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if (stm != null) {
				try {
					stm.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (conn != null) {
				try {
					conn.commit();
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}

上面是代码,为什么会在stm.executeBatch();这个地方发生异常呢??蛋疼啊,我同步了这个方法啊

做个少女永远怀春 2021-12-01 21:21:19

不能多线程共用一个conn。 那怎么办?

泪冰清 2021-12-01 21:20:38

我现在蛋疼在

樱花落人离去 2021-12-01 21:19:21

不能多线程共用一个conn。 那怎么办?

伴我心暖 2021-12-01 21:16:43

也就是说有一个线程在写入的时候必须保证没有其它线程写入,是这个意思吗?

猫九 2021-12-01 21:14:37

对。。要不然就得等待,很可能超时

顾挽 2021-12-01 21:14:17

回复
操,真心蛋疼了

像你 2021-12-01 19:50:13

麻烦帮忙看下下面代码是否有问题?

伪装你 2021-12-01 19:44:17

sqlite查询是并发的,写入是单线程的。。。最基本的文件锁

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文