private void GenMessageSave(MessageDef messageDef, TextWriter sw)
{
try {
sw.WriteLine();
sw.WriteLine("\t\tprivate static void Save{0}(bool isValid, int dataVersion, byte[] data)", messageDef.m_TypeName);
sw.WriteLine("\t\t{");
sw.WriteLine("\t\t\tobject _msg;");
sw.WriteLine("\t\t\tif(DbDataSerializer.Decode(data, typeof({0}), out _msg)){{", messageDef.m_TypeName);
sw.WriteLine("\t\t\t\t{0} msg = _msg as {1};", messageDef.m_TypeName, messageDef.m_TypeName);
sw.WriteLine("\t\t\t\ttry {");
sw.WriteLine("\t\t\t\t using (MySqlCommand cmd = new MySqlCommand()) {");
sw.WriteLine("\t\t\t\t cmd.Connection = DBConn.MySqlConn;");
sw.WriteLine("\t\t\t\t cmd.CommandType = CommandType.StoredProcedure;");
sw.WriteLine("\t\t\t\t cmd.CommandText = \"Save{0}\";",messageDef.m_TypeName);
sw.WriteLine("\t\t\t\t MySqlParameter inputParam;");
sw.WriteLine("\t\t\t\t inputParam = new MySqlParameter(\"@_IsValid\", MySqlDbType.Bit);");
sw.WriteLine("\t\t\t\t inputParam.Direction = ParameterDirection.Input;");
sw.WriteLine("\t\t\t\t inputParam.Value = isValid;");
sw.WriteLine("\t\t\t\t cmd.Parameters.Add(inputParam);");
sw.WriteLine("\t\t\t\t inputParam = new MySqlParameter(\"@_DataVersion\", MySqlDbType.Int32);");
sw.WriteLine("\t\t\t\t inputParam.Direction = ParameterDirection.Input;");
sw.WriteLine("\t\t\t\t inputParam.Value = dataVersion;");
sw.WriteLine("\t\t\t\t cmd.Parameters.Add(inputParam);");
foreach (MemberDef memberDef in messageDef.m_Members) {
string mysqlClientType = GetMySqlClientType(memberDef.m_TypeName);
sw.WriteLine("\t\t\t\t inputParam = new MySqlParameter(\"@_{0}\", {1});", memberDef.m_MemberName, mysqlClientType);
sw.WriteLine("\t\t\t\t inputParam.Direction = ParameterDirection.Input;");
sw.WriteLine("\t\t\t\t inputParam.Value = msg.{0};", memberDef.m_MemberName);
string sqlType = GetSqlType(memberDef.m_TypeName);
if (0 == sqlType.CompareTo("varchar")) {
int size;
if (memberDef.m_MaxSize > 0) {
size = memberDef.m_MaxSize;
} else {
size = m_DefVarcharSize;
}
sw.WriteLine("\t\t\t\t inputParam.Size = {0};", size);
}
sw.WriteLine("\t\t\t\t cmd.Parameters.Add(inputParam);");
}
sw.WriteLine("\t\t\t\t cmd.ExecuteNonQuery();");
sw.WriteLine("\t\t\t\t }");
sw.WriteLine("\t\t\t\t} catch (Exception ex) {");
sw.WriteLine("\t\t\t\t DBConn.Close();");
sw.WriteLine("\t\t\t\t throw ex;");
sw.WriteLine("\t\t\t\t}");
sw.WriteLine("\t\t\t}");
sw.WriteLine("\t\t}");
sw.WriteLine();
} catch (Exception ex) {
Console.WriteLine(ex);
}
}