扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
using System; using System.Data; using System.Data.SqlClient; namespace Aspcn { public class DbTran { file://执行事务处理 public void DoTran() { file://建立连接并打开 SqlConnection myConn=GetConn(); myConn.Open(); SqlCommand myComm=new SqlCommand(); SqlTransaction myTran; myTran=myConn.BeginTransaction(); file://下面绑定连接和事务对象 myComm.Connection=myConn; myComm.Transaction=myTran; file://试图创建数据库TestDB myComm.CommandText="CREATE database TestDB"; myComm.ExecuteNonQuery(); file://提交事务 myTran.Commit(); } file://获取数据连接 private SqlConnection GetConn() { string strSql="Data Source=localhost;Integrated Security=SSPI;user id=sa;password="; SqlConnection myConn=new SqlConnection(strSql); return myConn; } } public class Test { public static void Main() { DbTran tranTest=new DbTran(); tranTest.DoTran(); Console.WriteLine("事务处理已经成功完成。"); Console.ReadLine(); } } } //--------------- |
未处理的异常: System.Data.SqlClient.SqlException: 在多语句事务内不允许使用 CREATE DATABASE 语句。
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Aspcn.DbTran.DoTran() at Aspcn.Test.Main() |
注意,如下的SQL语句不允许出现在事务中:
ALTER DATABASE | 修改数据库 |
BACKUP LOG | 备份日志 |
CREATE DATABASE | 创建数据库 |
DISK INIT | 创建数据库或事务日志设备 |
DROP DATABASE | 删除数据库 |
DUMP TRANSACTION | 转储事务日志 |
LOAD DATABASE | 装载数据库备份复本 |
LOAD TRANSACTION | 装载事务日志备份复本 |
RECONFIGURE | 更新使用 sp_configure 系统存储过程更改的配置选项的当前配置(sp_configure 结果集中的 config_value 列)值。 |
RESTORE DATABASE | 还原使用BACKUP命令所作的数据库备份 |
RESTORE LOG | 还原使用BACKUP命令所作的日志备份 |
UPDATE STATISTICS | 在指定的表或索引视图中,对一个或多个统计组(集合)有关键值分发的信息进行更新 |
除了这些语句以外,你可以在你的数据库事务中使用任何合法的SQL语句。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者