SqlTransaction 事物使用参数 SqlParameter 提交事物会不行?

来源:百度知道 编辑:UC知道 时间:2024/05/02 10:43:59
string SqlStr1 = @"update Ztb_1 set UserName = @Uname where Id = @id";
string SqlStr2 = @"update Ztb_2 set Jifen = @jifen where Id = @aid";
string[] SqlStrZu = new string[2];
SqlStrZu[0] = SqlStr1;
SqlStrZu[1] = SqlStr2;

SqlParameter[] SqlPara = { new SqlParameter("@Uname", "李四"), new SqlParameter("@id", 1), new SqlParameter("@jifen", "132"), new SqlParameter("@aid", 2) };

ZhiXing(SqlStrZu, SqlPara); //执行这个方法

private void ZhiXing(string[] SqlStr ,SqlParameter[] SqlPara)
{
SqlConnection Con = Zdb.ReturnCon();
Con.Open();
SqlTransaction Tran = Con.BeginTransaction();

SqlCommand Cmd = new SqlCommand();
Cmd.Connection = Con;

foreach (SqlParameter Npara in SqlPara)
{
Cmd.Parameters.Add(Npara);
}

错在这里:
foreach (SqlParameter Npara in SqlPara)
{
Cmd.Parameters.Add(Npara);
}

Cmd.Parameters内有4个参数而下面的语句调用明显有问题

foreach (string NsqlStr in SqlStr)
{
Cmd.CommandText = NsqlStr;
Cmd.ExecuteNonQuery();
}
看你自己写的:
string SqlStr1 = @"update Ztb_1 set UserName = @Uname where Id = @id";
string SqlStr2 = @"update Ztb_2 set Jifen = @jifen where Id = @aid";

SqlStr1 只有2个参数,

SqlStr2 也只有2个参数,而Cmd.Parameters内有4个参数,能行吗>?

你改为下面的就ok了
string sqlAll= SqlStr1 +SqlStr2;
Cmd.CommandText = sqlAll;
Cmd.ExecuteNonQuery();

分给我`