C# To SQL Server 批量更新


一、UpdateCommand完成批量更新

注意:使用UpdateCommand进行批量更新时,如果此更新方法在事务里面,则必须将事务传递到SqlCommand 中,否则可能会因为事务交叉引起超时。

 

View Code
public override bool UpdateContractChargeBatch(List<ContractCharge> contractChargeLst)   
        {   
            SqlConnection conn = db.CreateConnection() as SqlConnection;   
            conn.Open();   
            SqlDataAdapter sd = new SqlDataAdapter("SELECT TOP " + contractChargeLst.Count + " CONTRACTCHARGEID,DETAILID,MINJOBCOUNT,MAXJOBCOUNT,RATE,RATEADDRATIO FROM CCM_CONTRACTCHARGE WITH(NOLOCK)", conn);   
            DataSet datasets = new DataSet();   
            SqlCommandBuilder scb = new SqlCommandBuilder(sd);   
            sd.UpdateCommand = scb.GetUpdateCommand();   
            sd.UpdateCommand = new SqlCommand("UPDATE CCM_CONTRACTCHARGE SET DETAILID=@DETAILID,MINJOBCOUNT=@MINJOBCOUNT,MAXJOBCOUNT=@MAXJOBCOUNT,RATE=@RATE,RATEADDRATIO=@RATEADDRATIO WHERE CONTRACTCHARGEID=@CONTRACTCHARGEID", conn);   
            sd.UpdateCommand.Parameters.Add("@DETAILID", SqlDbType.UniqueIdentifier, 16, "DETAILID");   
            sd.UpdateCommand.Parameters.Add("@CONTRACTCHARGEID", SqlDbType.UniqueIdentifier, 16, "CONTRACTCHARGEID");   
            sd.UpdateCommand.Parameters.Add("@MINJOBCOUNT", SqlDbType.Int, 4, "MINJOBCOUNT");   
            sd.UpdateCommand.Parameters.Add("@MAXJOBCOUNT", SqlDbType.Int, 4, "MAXJOBCOUNT");   
            sd.UpdateCommand.Parameters.Add("@RATE", SqlDbType.Float, 8, "RATE");   
            sd.UpdateCommand.Parameters.Add("@RATEADDRATIO", SqlDbType.Float, 8, "RATEADDRATIO");   
            sd.UpdateCommand.UpdatedRowSource = UpdateRowSource.None;   
            sd.UpdateBatchSize = 0;   
            sd.Fill(datasets);   
            for (int i = 0; i < contractChargeLst.Count; i++)   
            {   
                datasets.Tables[0].Rows[i].BeginEdit();   
                datasets.Tables[0].Rows[i]["DETAILID"] = contractChargeLst[i].DetailId;   
                datasets.Tables[0].Rows[i]["CONTRACTCHARGEID"] = contractChargeLst[i].ContractChargeId;   
                if (contractChargeLst[i].MinJobCount != int.MaxValue)   
                {   
                    datasets.Tables[0].Rows[i]["MINJOBCOUNT"] = contractChargeLst[i].MinJobCount;   
                }   
                else  
                {   
                    datasets.Tables[0].Rows[i]["MINJOBCOUNT"] = DBNull.Value;   
                }   
                if (contractChargeLst[i].MaxJobCount != int.MaxValue)   
                {   
                    datasets.Tables[0].Rows[i]["MAXJOBCOUNT"] = contractChargeLst[i].MaxJobCount;   
                }   
                else  
                {   
                    datasets.Tables[0].Rows[i]["MAXJOBCOUNT"] = DBNull.Value;   
                }   
                datasets.Tables[0].Rows[i]["RATE"] = contractChargeLst[i].Rate;   
                datasets.Tables[0].Rows[i]["RATEADDRATIO"] = contractChargeLst[i].RateAddRatio;   
                datasets.Tables[0].Rows[i].EndEdit();   
            }   
            int reslut = sd.Update(datasets.Tables[0]);   
            datasets.Tables[0].Clear();   
            sd.Dispose();   
            datasets.Dispose();   
            conn.Close();   
            return reslut == contractChargeLst.Count;   
        }  

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM