GameFramework.DataDML.BatchSaveTableMailInfo C# (CSharp) Method

BatchSaveTableMailInfo() private static method

private static BatchSaveTableMailInfo ( List validList, List dataList, int dataVersion ) : int
validList List
dataList List
dataVersion int
return int
        private static int BatchSaveTableMailInfo(List<bool> validList, List<byte[]> dataList, int dataVersion)
        {
            if (dataList.Count <= 0) {
              return 0;
            }
            StringBuilder sbSql = new StringBuilder("insert into TableMailInfo ", 4096);
            sbSql.Append("(IsValid,DataVersion,Guid,Sender,Receiver,SendDate,ExpiryDate,Title,Text,Money,Gold,ItemIds,ItemNumbers,LevelDemand,IsRead)");
            sbSql.Append(" values ");
            for (int i = 0; i < validList.Count; ++i) {
              Byte valid = 1;
              if (validList[i] == false) {
                valid = 0;
              }
              StringBuilder sbValue = new StringBuilder();
              sbValue.AppendFormat("({0},{1}", valid, dataVersion);
              object _msg;
              if (DbDataSerializer.Decode(dataList[i], typeof(TableMailInfo), out _msg)) {
                TableMailInfo msg = _msg as TableMailInfo;
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.Guid);
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.Sender);
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.Receiver);
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.SendDate);
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.ExpiryDate);
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.Title);
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.Text);
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.Money);
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.Gold);
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.ItemIds);
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.ItemNumbers);
                sbValue.Append(',');
                sbValue.AppendFormat("'{0}'", msg.LevelDemand);
                sbValue.Append(',');
                sbValue.Append(msg.IsRead);
                sbValue.Append(')');
                sbSql.Append(sbValue.ToString());
                sbSql.Append(',');
              }
            }
            sbSql.Remove(sbSql.Length - 1, 1);
            sbSql.Append(" on duplicate key update ");
            sbSql.AppendFormat(" IsValid = if(DataVersion < {0}, values(IsValid), IsValid),", dataVersion);
            sbSql.AppendFormat(" Guid = if(DataVersion < {0}, values(Guid), Guid),", dataVersion);
            sbSql.AppendFormat(" Sender = if(DataVersion < {0}, values(Sender), Sender),", dataVersion);
            sbSql.AppendFormat(" Receiver = if(DataVersion < {0}, values(Receiver), Receiver),", dataVersion);
            sbSql.AppendFormat(" SendDate = if(DataVersion < {0}, values(SendDate), SendDate),", dataVersion);
            sbSql.AppendFormat(" ExpiryDate = if(DataVersion < {0}, values(ExpiryDate), ExpiryDate),", dataVersion);
            sbSql.AppendFormat(" Title = if(DataVersion < {0}, values(Title), Title),", dataVersion);
            sbSql.AppendFormat(" Text = if(DataVersion < {0}, values(Text), Text),", dataVersion);
            sbSql.AppendFormat(" Money = if(DataVersion < {0}, values(Money), Money),", dataVersion);
            sbSql.AppendFormat(" Gold = if(DataVersion < {0}, values(Gold), Gold),", dataVersion);
            sbSql.AppendFormat(" ItemIds = if(DataVersion < {0}, values(ItemIds), ItemIds),", dataVersion);
            sbSql.AppendFormat(" ItemNumbers = if(DataVersion < {0}, values(ItemNumbers), ItemNumbers),", dataVersion);
            sbSql.AppendFormat(" LevelDemand = if(DataVersion < {0}, values(LevelDemand), LevelDemand),", dataVersion);
            sbSql.AppendFormat(" IsRead = if(DataVersion < {0}, values(IsRead), IsRead),", dataVersion);
            sbSql.AppendFormat(" DataVersion = if(DataVersion < {0}, {0}, DataVersion),", dataVersion);
            sbSql.Remove(sbSql.Length - 1, 1);
            string statement = sbSql.ToString();
            int count = 0;
            try {
              using (MySqlCommand cmd = new MySqlCommand()) {
                cmd.Connection = DBConn.MySqlConn;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = statement;
                count = cmd.ExecuteNonQuery();
              }
            } catch (Exception ex) {
              if (dataList.Count < 200) {
                LogSys.Log(LOG_TYPE.ERROR, "Error Sql statement:{0}", statement);
              }
              DBConn.Close();
              throw ex;
            }
            return count;
        }