asp.net中怎么同时向多张表插入记录了,只有有一个插入失败,全部执行插入就失败

 我来答
kyd3000
2010-11-23 · TA获得超过1550个赞
知道大有可为答主
回答量:1674
采纳率:50%
帮助的人:897万
展开全部
用事务...只要执行中间失败.就全部回到执行前状态

#region 运行SQL Server事务Run方法
/// <summary>
/// 运行SQL Server事务
/// </summary>
public void Run()
{
// 访问Microsoft SQL Server样本数据库Northwind,假设Microsoft SQL Server的sa密码为空
string connectionString=@"Server=(Local);Database=Northwind;UID=sa;PWD=;Persist Security Info=false;";

//创建Connection对象
System.Data.SqlClient.SqlConnection sqlConnection = null;
System.Data.SqlClient.SqlTransaction sqlTransaction = null;
try
{
sqlConnection = new System.Data.SqlClient.SqlConnection(connectionString);
sqlConnection.Open();//打开Connection

// 开始本地事务,Connection.BeginTransaction()
// IsolationLevel.ReadCommitted:
// 在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻像数据。
sqlTransaction = sqlConnection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted,"SQLTransaction");

//创建Command对象
System.Data.SqlClient.SqlCommand sqlCommand = sqlConnection.CreateCommand();
// 指派Connection和Transaction对象给Command对象
sqlCommand.Connection = sqlConnection;
sqlCommand.Transaction = sqlTransaction;

//开始执行事务,该事务由命令1 2 3组成.
// 执行数据库命令1
sqlCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (200, \'Description\')";
sqlCommand.ExecuteNonQuery();
// 执行数据库命令2
sqlCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (201, \'Description\')";
sqlCommand.ExecuteNonQuery();
// 执行数据库命令3!!!与命令1相同,会出错
sqlCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (200, \'Description\')";
sqlCommand.ExecuteNonQuery();
// 提交事务
sqlTransaction.Commit();
Console.WriteLine("两条数据库命令已经执行完成.");
}
catch(Exception e)
{
try
{
if(sqlTransaction != null)
{
// 回滚事务
sqlTransaction.Rollback("SQLTransaction");
}
}
catch (System.Data.SqlClient.SqlException ex)
{
// 回滚事务失败
if (sqlTransaction.Connection != null)
{
Console.WriteLine("执行回滚事务时出现 " + ex.GetType() + " 违例!" + ex.Message);
}
}

Console.WriteLine("在执行数据库命令时出现 " + e.GetType() + " 违例!" + e.Message);
Console.WriteLine("两条数据库命令均未完成.");
}
finally
{
//关闭Connection
if(sqlConnection != null)
{
sqlConnection.Close();
}
}
}
#endregion
lieut_sniper
2010-11-23 · TA获得超过2538个赞
知道大有可为答主
回答量:1456
采纳率:0%
帮助的人:1210万
展开全部
同时向多张表单中插入记录,说明你的数据库控制语句中使用了多表插入,如果一个表插入失败,那系统就会认为这个语句执行失败,自然就会导致所有得数据插入失败。你可以自己看看数据库控制中是否存在错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lwhcf423
2010-11-23 · TA获得超过179个赞
知道小有建树答主
回答量:344
采纳率:0%
帮助的人:191万
展开全部
可以写一个存储过程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hanqinxu
2010-11-23
知道答主
回答量:11
采纳率:0%
帮助的人:12.3万
展开全部
用事务吧,
数据库有一个事务提交和事务回滚
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式