易截截图软件、单文件、免安装、纯绿色、仅160KB

C# 连接 Sqlite 事务的问题

// 打开数据库
SQLiteConnection dconn = new System.Data.SQLite.SQLiteConnection();
dconn.ConnectionString = @"Data Source=D:\db.sdb";
dconn.Open();
SQLiteCommand dcmd = dconn.CreateCommand();
DbTransaction dtrans = dconn.BeginTransaction();
// 向aa表中插入一条数据
dcmd.CommandText = "insert into aa (a) values ('000001')";
dcmd.ExecuteNonQuery();
dtrans.Commit();
// 向aa表中插入第二条数据
dcmd.CommandText = "insert into aa (a) values ('000002')";
dcmd.ExecuteNonQuery();
dtrans.Commit();//这儿一个事务中两次commit可不可以,我的代码中这个地方报错
// 放弃插入第三条数据
dcmd.CommandText = "insert into aa (a) values ('opq')";
dcmd.ExecuteNonQuery();
dtrans.Rollback();//commit后还可能rollback吗?如果可以,回到哪儿呢,commit之后,还是事务的开始处
// 关闭数据库连接
dconn.Close();


两处红字就是我的问题!


我想对数据分批 commit 不行吗? 不能出现超过一个?

翻出事务的文章来看了下终于有了答案了:

事务三种运行模式:自动提交事务每条单独的语句都是一个事务。显式事务每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。隐性事务在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。

这说明,commit或者rollback之后这个事务就完成了,之后不能再有任何的commit或者rollback了。



相关问答:

关于ajax的一个问题 - .NET技术 / C#

我的ajax的updatepanel控件里的面不能执行response.write,可是我需要弹出对话框,我要怎么做呢?
有没有不需要response.write弹提示框的做法呢?
另外我的页面上有一个web用户控件,然后放一个gridview在updatepa ......

截取WINfrom中HTML的标签!!! - .NET技术 / C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Syst ......

C#和数据库SQL - MS-SQL Server / 基础类

我们C#做一个窗体 往数据库里插入数据
  SqlConnection cn = new SqlConnection("Data Source=20090713-1752\\SQLEXPRESS;Initial Catalog=goods;Integrated Security=True");
  ......

求高手指点,一个PDA程序,sqlite数据库连接不上,急

string ConStr="data source=C:\ceshi.db;verson=3;password=123456";
  SQLiteConnection MyConnection = new SQLiteConnection(ConStr);
  try
  { ......

sqlite 高手进来啊

小弟 弄点东西可是调用 sqlite3_prepare 这个函数 select 就好使 只要 改变数据库 的就不行 比如insert 之类的 谁来帮个忙啊 请问这是什么原因 啊 用 c 去实现的
你用的什么工具啊?
把你自己的代码发 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号