ASP.NET Sqltransaction类的使用

小弟刚出道,询问各位高手一个问题我有4个数据表A,B,C,D将4个表的数据批量复制到表E中,所以就写了4条insert的sql语句,我想使用Sqltransaction类... 小弟刚出道,询问各位高手一个问题

我有4个数据表A,B,C,D 将4个表的数据批量复制到表E中,所以就写了4条insert的sql语句,我想使用Sqltransaction类,并且当任何一个insert执行错误,所有其他的插入动作就回滚。烦请高手指点
展开
 我来答
百度网友cbea47d
2009-04-17 · TA获得超过172个赞
知道答主
回答量:70
采纳率:0%
帮助的人:72.3万
展开全部
string sql1, sql2, sql3, sql4;//这四个sql语句是你要的插入sql语句;
SqlConnection con = new SqlConnection();//这里要添加你的连接字符串
con.Open;
SqlTransaction tran = con.BeginTransaction();
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = sql1;
com.EndExecuteNonQuery();
com.CommandText = sql2;
com.EndExecuteNonQuery();
com.CommandText = sql3;
com.EndExecuteNonQuery();
com.CommandText = sql4;
com.EndExecuteNonQuery();
try
{
tran.Commit();
}
catch
{
tran.Rollback();
}
finally
{
con.Close();
tran.Dispose();
}
百度网友5c46a3471
2009-04-17 · TA获得超过118个赞
知道答主
回答量:37
采纳率:0%
帮助的人:35.1万
展开全部
下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。

private static void ExecuteSqlTransaction(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();

SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;

// Start a local transaction.
transaction = connection.BeginTransaction("SampleTransaction");

// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = connection;
command.Transaction = transaction;

try
{
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
command.ExecuteNonQuery();
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
command.ExecuteNonQuery();

// Attempt to commit the transaction.
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception ex)
{
Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
Console.WriteLine(" Message: {0}", ex.Message);

// Attempt to roll back the transaction.
try
{
transaction.Rollback();
}
catch (Exception ex2)
{
// This catch block will handle any errors that may have occurred
// on the server that would cause the rollback to fail, such as
// a closed connection.
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
Console.WriteLine(" Message: {0}", ex2.Message);
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式