34,590
社区成员
发帖
与我相关
我的任务
分享
public static int ExecuteAsTransaction(string CommandText, List<Parameter[]> ParamsList)
{
//...省略部分代码 已经获取连接Sconn
SqlCommand cmd = new SqlCommand();
cmd.Connection = Sconn;
SqlTransaction transaction = Sconn.BeginTransaction(); //开始事务 cmd.Transaction = transaction;
bool flag = false;
try
{
foreach (Parameter[] Params in ParamsList)
{
AddParameter(ref cmd, Params); //增加参数
cmd.CommandText = CommandText;
cmd.ExecuteNonQuery();
}
transaction.Commit();
flag = true;
}
catch (Exception ex1)
{
transaction.Rollback();
flag = false;
throw new Exception(ex1.Message);
}
finally
{
//
}
return (flag ? 0 : -2);
}
private static void AddParameter(ref SqlCommand Cmd, params Parameter[] Params)
{
//如果SqlCommand对象和参数列表不为空,则进行添加参数操作
if ((Params != null) && (Cmd != null))
{
for (int i = 0; i < Params.Length; i++)
{
if (Params[i] != null) //判断参数是否为空
{
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = Params[i].Name.StartsWith("@") ? Params[i].Name : ("@" + Params[i].Name); //哪果参数没有以"@"开头,则手动添加上"@"符号
parameter.SqlDbType = DbType2SqlDbType(Params[i].Type); //设置参数类型
if (Params[i].Size > 0)
{
parameter.Size = Params[i].Size; //设置参数大小
}
parameter.Direction = Params[i].Direction; //设置参数方向
//如果参数方向为"输入" 或者 "输入输出"并且参数不为空,则为参数的 Value属性赋值
if (((Params[i].Direction == ParameterDirection.InputOutput) || (Params[i].Direction == ParameterDirection.Input)) && (Params[i].Value != null))
{
parameter.Value = Params[i].Value;
}
Cmd.Parameters.Add(parameter); //将参数添加到SqlCommand命令中
}
}
}
}
public static int ExecuteNonQuery(string CommandText, params Parameter[] Params)
{
if (Sconn == null)
{
Sconn = getSqlConnection();
}
if (Sconn.State != ConnectionState.Open)
{
Sconn.Open();
}
SqlCommand cmd = new SqlCommand(CommandText, Sconn);
AddParameter(ref cmd, Params);
SqlTransaction transaction = Sconn.BeginTransaction(); //在事务中执行sql语句
cmd.Transaction = transaction;
bool flag = false;
try
{
cmd.ExecuteNonQuery();
transaction.Commit();
flag = true;
}
catch (Exception ex1)
{
transaction.Rollback();
flag = false;
throw new Exception(ex1.Message);
}
finally
{
//
}
return (flag ? 0 : -2);
}
大神帮忙啊