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了。
帮
相关问答:
DataSet导出xml 批处理(循环)得怎么处理
XML文件
<A>
<B>
<C>
</C>
&nb ......
21cn的邮箱,在outlook配置后可以正常收发邮件,可是我写在C#中就不行,换成其它邮箱,163很早注册的。可以发送。查了很久,没有找到原因,请高手帮忙解答。。。小弟,谢了。。代码如下:
private void SendMail ......
我有一个XML.想取
<Portfolio _Name="XXXX" _Id="AUD" >
中的属性_Id的值.但是用下面的语句好象不行.
XmlNode CId = xdoc_Msg.SelectSingleNode("/Portfolio");
&n ......
有一台数据库服务器,客户端使用ADO.NET连接sql,使用ExecuteScalar执行SQL INSERT语句,然后客户端刷新不能查询到新INSERT的数据,过10秒左右才能查到新数据
什么原因
你做了缓存吗?
没做缓存
怎么会呢! ......