【问题标题】:Ensuring safe SQLite database manipulation (not referring to thread safe)确保安全的 SQLite 数据库操作(不是指线程安全)
【发布时间】:2015-04-30 14:32:00
【问题描述】:

我有一个应用程序可以将多行(100 行)插入和/或更新到表中。在我的应用程序中一次只运行一个线程。在多个函数中的每次插入/更新之前,都会计算和检查每一行。

我担心如果应用程序在插入行的开始和结束之间被中断,我的数据将会损坏/不完整。这可能发生吗?

我多次尝试使用 home 键中断该过程,但没有成功,但这并不是详尽的方法。

我正在实现这里讨论的单例方法:Is Sqlite Database instance thread safe 但这并不能解决我的问题。

【问题讨论】:

  • 在所有 UPDATE 和 INSERT 周围使用 transaction
  • 如果我分别插入 200 多行,围绕所有更新和插入的事务将不起作用。我想出了正确的方法(我认为)。将所有行信息放入一个arraylist,然后在开始和结束事务之间放置一个循环以插入所有行。不过感谢您的评论,它为我指明了正确的方向。
  • 如果不想使用事务,为什么要接受推荐事务的答案?

标签: sqlite


【解决方案1】:

From the fine manual 。 . .

事务数据库是一个包含所有更改和查询的数据库 似乎是原子的、一致的、孤立的和持久的 (ACID)。 SQLite 实现原子的、一致的、可序列化的事务, 隔离且持久,即使事务被 程序崩溃、操作系统崩溃或电源故障 电脑。

如果您正在执行数百条 SQL 语句,并且您需要知道 a) 全部提交,或者 b) 没有提交,请将所有这些 SQL 语句包装在单个 transaction 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多