C#通过事务批量插入数据库

通过C#通过事务来批量插入数据库

public int SubmitResult(DBEntityResultInfo entityResultInfo, List<DBEntityResultDetailInfo> listResultDetails, IDbTransaction trans)
        {

            List<SqlParameter> paramList = new List<SqlParameter>();
            string sqlstr = @"INSERT INTO Exam_ResultInfo
                           ([ExamID]
                           ,[UserAccount]
                           ,[ExamTime]
                           ,[IsCertificate]
                           ,[CurrentLanguage])
                     VALUES
                           (@ExamID
                           ,@UserAccount
                           ,@ExamTime
                           ,@IsCertificate
                           ,@CurrentLanguage)";
            sqlstr += "declare @resultID int;select @resultID=@@identity;";
            paramList.Add(new SqlParameter("@ExamID", entityResultInfo.ExamID));
            paramList.Add(new SqlParameter("@UserAccount", entityResultInfo.UserAccount));
            paramList.Add(new SqlParameter("@ExamTime", entityResultInfo.ExamTime));
            paramList.Add(new SqlParameter("@IsCertificate", entityResultInfo.IsCertificate));
            paramList.Add(new SqlParameter("@CurrentLanguage", entityResultInfo.CurrentLanguage));
            for (int i = 0; i < listResultDetails.Count; i++)
            {
                sqlstr += @"INSERT INTO [MCD_WeiXinDB].[dbo].[Exam_ResultDetailInfo]
                       ([ResultID]
                       ,[QuestionID]
                       ,[AnswerID])
                 VALUES(@resultID,@QuestionID" + i + ",@AnswerID" + i + ")";
                paramList.Add(new SqlParameter("@QuestionID" + i, listResultDetails[i].QuestionID));
                paramList.Add(new SqlParameter("@AnswerID" + i, listResultDetails[i].AnswerID));
            }

            return DbHelper.ExecuteNonQuery(trans, CommandType.Text, sqlstr, paramList.ToArray());


        }

底层代码1

public static int ExecuteNonQuery(IDbTransaction transaction,
            CommandType commandType, string commandText, params SqlParameter[] commandParameters)
        {

            if (transaction is SqlTransaction)
            {
                return SqlHelper.ExecuteNonQuery(transaction as SqlTransaction, commandType, commandText, commandParameters);
            }
            else
            {
                throw new Exception("not implenment");
            }
        }

底层代码2

  public static int ExecuteNonQuery(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
        {
            if (transaction == null) throw new ArgumentNullException("transaction");
            if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");

            // Create a command and prepare it for execution
            SqlCommand cmd = new SqlCommand();
            bool mustCloseConnection = false;
            PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection);

            // Finally, execute the command
            int retval = cmd.ExecuteNonQuery();

            // Detach the SqlParameters from the command object, so they can be used again
            cmd.Parameters.Clear();
            return retval;
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值