使用SqlTransaction对象处理 批量导入数据内容的应用场景
SqlTransaction的使用:
开启事务,执行一组操作,更灵活,不管是不是批量的数据都可以进行驾驭
使用实例:
创建测试表:
Create table tesTable
(
uName varchar(30),
uPwd varchar(30),
age smallint,
deptId smallint
)
create table DeptTable
(
deptId smallint primary key identity(1,1),
deptName varchar(30)
)
当前数据表中的内容
使用程序开启事务:
try...catch用于捕获异常 ,保证数据的提交或回滚的一致性;
//使用SqlTransaction开启事务
static void teseSqlTransaction()
{
string connStr = ConfigurationManager.ConnectionStrings
["connStr"].ConnectionString;
SqlConnection conn = new SqlConnection(connStr);
//开启事务前需要连接开启
conn.Open();
//开启一个事务
SqlTransaction tran = conn.BeginTransaction();
//建立command
SqlCommand cmd = conn.CreateCommand();
//设置要执行的事务
cmd.Transaction = tran;
try
{
//定义要执行的操作
cmd.CommandText = "insert into depttable(deptName) values(@DeptName);select @@identity;";
cmd.Parameters.Add(new SqlParameter("@DeptName", "采购部"));
object oId = cmd.ExecuteScalar();
//清空参数
cmd.Parameters.Clear();
int deptId = 0;
if (oId != null)
{
deptId = int.Parse(oId.ToString());
}
cmd.CommandText = "insert into tesTable(uName,uPwd,age,deptId)" +
" values(@UserName, @UserPwd, @UserAge, @deptId)";
SqlParameter[] parameters =
{
new SqlParameter("@UserName","X_XYZ"),
new SqlParameter("@UserPwd","1234"),
new SqlParameter("@UserAge",123),
new SqlParameter("@deptId",deptId)
};
//添加参数数组
cmd.Parameters.AddRange(parameters);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
tran.Commit();
Console.WriteLine("添加成功");
}
catch
{
tran.Rollback();
Console.WriteLine("出现异常");
}
finally
{
conn.Close();
}
}
运行: