编程语言C#,数据库ACCESS,如何支持事务
比如我要对数据库操作,必须分两步实现,在第一步插入成功得情况下,第二步却报错,用编程该如何回滚?
我想得方式是:在判断第二步报错得情况下,编一段程序把第一步得操作删掉,但在有很多用这种方式得情况下需要增加很大得工作量。请问有没有更好得方法?
比如我要对数据库操作,必须分两步实现,在第一步插入成功得情况下,第二步却报错,用编程该如何回滚?
我想得方式是:在判断第二步报错得情况下,编一段程序把第一步得操作删掉,但在有很多用这种方式得情况下需要增加很大得工作量。请问有没有更好得方法?
try
{
this.oleDbConnection1.Open ();
//System.Data.OleDb.OleDbTransaction tr = this.oleDbConnection1.BeginTransaction();
//tr.Begin(); System.Data.OleDb.OleDbCommand c = new System.Data.OleDb.OleDbCommand("insert into a values('a','b')",this.oleDbConnection1);
//c.Transaction = tr;
c.ExecuteNonQuery();
//tr.Commit();
}
catch(System.Data.OleDb.OleDbException ex)
{
MessageBox.Show(ex.Message);
}
COMMIT
可以
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k/html/acmsdeop.asp
http://www.microsoft.com/technet/prodtechnol/sbs/45/reskit/part9/sbrk0945.mspxUse Jet if: You want the highest compatibility with Access 97 or earlier.
Your environment has a small number of simultaneous users.
You have very low resources, such as memory or disk.
Ease of use is a primary concern. Use MSDE if: You want to develop from a single code base, from a single user to thousands of users.
You expect a future need for greater scalability.
You require easy merge replication with the central server.
You need the best security.
You need great reliability, such as transaction logging.
Your system is online 24 hours a day, 7 days a week.
You need stored procedures and triggers.
关键是没有回滚代码。this.oleDbConnection1.Open ();
System.Data.OleDb.OleDbTransaction tr=this.oleDbConnection1.BeginTransaction();
tr.Begin();
try
{
System.Data.OleDb.OleDbCommand c = new System.Data.OleDb.OleDbCommand("insert into a values('a','b')",this.oleDbConnection1);
c.Transaction = tr;
c.ExecuteNonQuery();
tr.Commit();
}
catch(System.Data.OleDb.OleDbException ex)
{
tr.Rollback();
MessageBox.Show(ex.Message);
}
//access2000以后的数据支持事务!!!!!!!!!!!!!
//________________________________________请楼上的把MVP马甲脱了吧,还有那些叫着"绝对不支持的"反省一下!测试
1) 新建一个数据库 c:\test.mdb;
2) 新建一个表 testTable,包括两个数字字段 ID, TestValue;
3) 新建一个窗体,加入如下代码测试一下string dbFileName = @"c:\test.mdb";
string link = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbFileName + ";User Id=admin;Password=;";
string sqlTran = "insert into testTable(ID,testValue) values(1,555)";
string sqlNoTran = "insert into testTable(ID,testValue) values(2,666)";
OleDbConnection cn = new OleDbConnection(link);
OleDbCommand cmd = new OleDbCommand(sqlTran, cn); cn.Open();
OleDbTransaction tran = cn.BeginTransaction();
cmd.Transaction = tran;
cmd.ExecuteNonQuery();
tran.Rollback();
//Rollback后,数值 1,555未被插入数据库, cmd.CommandText = sqlNoTran;
cmd.ExecuteNonQuery();
//数据2,666已正确插入数据库
cn.Close();
关于事务处理《查询》
http://access911.net/index.asp?u1=a&u2=73FABF1E14DC
关于此主题请参考:
《查询》什么是事务处理?怎么进行事务处理?
http://access911.net/index.asp?u1=a&u2=71FABE1E13DC
jet db 4.0 就开始支持事务处理了
如何获取当前数据库jet db版本?《VBA》
http://access911.net/index.asp?u1=a&u2=75FAB51E15DC
作者:cg1 摘自:access911.net 编辑:cg1 更新日期:2003-3-11 浏览人次:929
专题地址:
http://access911.net/?kbid;72FABF1E14DC
简述:
《发布》MDAC是什么?在哪里下载?包含什么? 阅读前需掌握:
基本了解 MDAC ADO JETDB
难度等级:
10
Microsoft Data Access Components 2.8http://msdn.microsoft.com/library/default.asp?url=/downloads/list/dataaccess.asp
地址有所更新:
http://msdn.microsoft.com/data/downloads/updates/default.aspx#MDAC
http://msdn.microsoft.com/data/mdac/downloads/default.aspx
http://www.microsoft.com/downloads/details.aspx?familyid=78cac895-efc2-4f8e-a9e0-3a1afbd5922e&displaylang=enADO / ADOX / JRO 是 MDAC 中的一部分,也要到上述地址下载
Microsoft Data Access Components 2.7 download:http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28001860注意:mdac2.6和其后续版本已经不包括jetdb得升级包了,如果要下载安装最新的jet db4.0请看以下地址:
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;239114