Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 事务性sqlite?在C中#_C#_Sqlite - Fatal编程技术网

C# 事务性sqlite?在C中#

C# 事务性sqlite?在C中#,c#,sqlite,C#,Sqlite,我正在编写一个原型应用程序。现在有些事情失败了,比如插入一个非唯一列。在这种情况下,我想回滚我所做的一切。我该怎么做? 我还注意到,在sqlite中,我需要提交数据,而在C中,它似乎是自动提交的,这让我怀疑有一个自动回滚选项?说: 对锁定和并发的更改 SQLite版本3中的控件 将一些微妙的变化引入 事务在SQL上的工作方式 语言水平。默认情况下,SQLite 版本3在自动提交模式下运行。 在自动提交模式下,对 数据库将在所有 与当前系统关联的操作 数据库连接完成 SQL命令“开始事务” (事务

我正在编写一个原型应用程序。现在有些事情失败了,比如插入一个非唯一列。在这种情况下,我想回滚我所做的一切。我该怎么做? 我还注意到,在sqlite中,我需要提交数据,而在C中,它似乎是自动提交的,这让我怀疑有一个自动回滚选项?

说:

对锁定和并发的更改 SQLite版本3中的控件 将一些微妙的变化引入 事务在SQL上的工作方式 语言水平。默认情况下,SQLite 版本3在自动提交模式下运行。 在自动提交模式下,对 数据库将在所有 与当前系统关联的操作 数据库连接完成

SQL命令“开始事务” (事务关键字是可选的) 用于将SQLite从 自动提交模式。请注意,开始 命令不会在上获取任何锁 数据库。在BEGIN命令之后,一个 共享锁将在 执行第一个SELECT语句。A. 保留锁将在 第一次插入、更新或删除 语句被执行。没有排他性 获取锁,直到 内存缓存已满,必须关闭 溢出到磁盘或直到 事务提交。就这样, 系统延迟阻止对数据的读取访问 直到最后一个可能的 片刻


回滚:看起来您要查找的是命令文本“插入或回滚…”

事务:sqlite自动将每个命令放入其自己的事务中,除非您明确说明何时开始。 编辑:TML在他的回答中更深入地解释了这一部分

明确打开/提交事务的示例如下:

using (DbTransaction dbTrans = myDBConnection.BeginTransaction())
{
     using (DbCommand cmd = myDBConnection.CreateCommand())
     {
         ...
     }
     dbTrans.Commit();
}

是的,SQLLite确实迫使您使用“事务性”查询,而不是一个接一个地发送查询的坏习惯。