private void GetItemsDataSet(object mangosDB) { string SQL = "SELECT entry,name FROM item_template;"; MyReceiverInvoke mi = new MyReceiverInvoke(invokeDataGridView); MySqlConnection Conn = new MySqlConnection(sManager.GetConnStr()); MySqlCommand chgDB = new MySqlCommand("USE " + mangosDB.ToString() + ";", Conn); MySqlCommand setname = new MySqlCommand("set names 'gbk';", Conn); MySqlDataAdapter adp = new MySqlDataAdapter(SQL, Conn); try { this.Invoke(mi, new object[] { 1, "正在读取物品信息..." }); Conn.Open(); setname.ExecuteNonQuery(); setname.Dispose(); chgDB.ExecuteNonQuery(); chgDB.Dispose(); ItemsSet = new DataSet(); adp.Fill(ItemsSet); adp.Dispose(); if (ItemsSet.Tables[0].Rows.Count == 0) { throw new Exception("没有找到任何物品!"); } this.Invoke(mi, new object[] { 2, string.Empty }); } catch (Exception err) { this.Invoke(mi, new object[] { 0, err.Message }); } finally { Conn.Close(); } }
private void SendMail(object sender) { SendMailInvoke mi = new SendMailInvoke(invokeSendMail); MySqlConnection Conn = new MySqlConnection(sManager.GetConnStr()); MySqlCommand setname = new MySqlCommand("set names 'gbk';", Conn); MySqlCommand chgDB = new MySqlCommand("USE " + ServerManager.CharactersDB + ";", Conn); try { Conn.Open(); setname.ExecuteNonQuery(); setname.Dispose(); chgDB.ExecuteNonQuery(); chgDB.Dispose(); MySqlCommand setAuto_Increment = new MySqlCommand("alter table mail modify id int not null auto_increment;", Conn); setAuto_Increment.ExecuteNonQuery(); setAuto_Increment = new MySqlCommand("alter table item_text modify id int not null auto_increment;", Conn); setAuto_Increment.ExecuteNonQuery(); setAuto_Increment = new MySqlCommand("alter table item_instance modify guid int not null auto_increment;", Conn); setAuto_Increment.ExecuteNonQuery(); setAuto_Increment.Dispose(); foreach (DataRow dr in ReceiversSet.Tables[0].Rows) { SendMailResault.Tables[0].Rows.Add(new object[] { dr[0], dr[1], dr[2], dr[3], "未发送" }); } int ReceiversCount = SendMailResault.Tables[0].Rows.Count; this.Invoke(mi, new object[] { 1, "正在发送..." }); for (int CurrentReceiver = 0; CurrentReceiver < ReceiversCount; CurrentReceiver++) { this.Invoke(mi, new object[] { 1, "正在发送..." + (CurrentReceiver + 1).ToString() + "/" + ReceiversCount.ToString() }); this.Invoke(mi, new object[] { 3, (CurrentReceiver * 1000 / ReceiversCount).ToString() }); int CurrentProgress = CurrentReceiver * 1000 / ReceiversCount; int InsertProgress = 2; int CurrentInsertProgress = 0; int has_items = 0; int TotalItemsCount = 0; int CurrentItemsCount = 0; if (ItemsSet.Tables[0].Rows.Count > 0) { foreach (DataRow dr in ItemsSet.Tables[0].Rows) { TotalItemsCount += Convert.ToInt32(dr[1]); } has_items = 1; InsertProgress = TotalItemsCount * 2 + 2; } this.Invoke(mi, new object[] { 2, "插入邮件内容" }); MySqlCommand InsertMail = new MySqlCommand("INSERT INTO item_text(text) VALUES('" + MailText + "');", Conn); InsertMail.ExecuteNonQuery(); InsertMail = new MySqlCommand("SELECT LAST_INSERT_ID();", Conn); object Current_item_text_id = InsertMail.ExecuteScalar(); Inserted_item_text.Add(Current_item_text_id); CurrentInsertProgress++; this.Invoke(mi, new object[] { 3, (CurrentProgress + 1000 / ReceiversCount * CurrentInsertProgress / InsertProgress).ToString() }); this.Invoke(mi, new object[] { 2, "插入邮件信息" }); InsertMail = new MySqlCommand("INSERT INTO mail(messageType, stationery, mailTemplateId, sender, receiver, subject, itemTextId, has_items, expire_time, deliver_time, money, cod, checked) VALUES(0, 61, 0, 0, " + this.ReceiversSet.Tables[0].Rows[CurrentReceiver][2].ToString() + ", '" + MailTittle + "', " + Current_item_text_id.ToString() + ", " + has_items.ToString() + ", " + this.ExpireTime + ", " + this.DeliverTime + ", 0, 0, 0);", Conn); InsertMail.ExecuteNonQuery(); InsertMail = new MySqlCommand("SELECT LAST_INSERT_ID();", Conn); object Current_mail_id = InsertMail.ExecuteScalar(); Inserted_mail.Add(Current_mail_id); CurrentInsertProgress++; this.Invoke(mi, new object[] { 3, (CurrentProgress + 1000 / ReceiversCount * CurrentInsertProgress / InsertProgress).ToString() }); if (ItemsSet.Tables[0].Rows.Count > 0) { foreach (DataRow ItemRow in ItemsSet.Tables[0].Rows) { for (int InsertItemRepeatCount = 0; InsertItemRepeatCount < Convert.ToInt32(ItemRow[1]); InsertItemRepeatCount++) { CurrentItemsCount++; this.Invoke(mi, new object[] { 2, "插入物品信息..." + CurrentItemsCount.ToString() + "/" + TotalItemsCount.ToString() }); MySqlCommand InsertItem = new MySqlCommand("INSERT INTO item_instance(owner_guid,data) VALUES(0,null);", Conn); InsertItem.ExecuteNonQuery(); InsertItem = new MySqlCommand("SELECT LAST_INSERT_ID();", Conn); object Current_item_instance_guid = InsertItem.ExecuteScalar(); Inserted_item_instance.Add(Current_item_instance_guid); CurrentInsertProgress++; this.Invoke(mi, new object[] { 3, (CurrentProgress + 1000 / ReceiversCount * CurrentInsertProgress / InsertProgress).ToString() }); InsertItem = new MySqlCommand("UPDATE item_instance SET data='" + Current_item_instance_guid.ToString() + " 1073741824 3 " + ItemRow[0].ToString() + " 1065353216 0 0 0 0 0 0 0 0 0 " + ItemRow[1].ToString() + " 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ' WHERE guid='" + Current_item_instance_guid.ToString() + "';", Conn); InsertItem.ExecuteNonQuery(); InsertItem = new MySqlCommand("INSERT INTO mail_items(mail_id,item_guid,item_template,receiver) VALUES(" + Current_mail_id.ToString() + "," + Current_item_instance_guid + "," + ItemRow[0].ToString() + "," + this.ReceiversSet.Tables[0].Rows[CurrentReceiver][2].ToString() + ");", Conn); InsertItem.ExecuteNonQuery(); CurrentInsertProgress++; this.Invoke(mi, new object[] { 3, (CurrentProgress + 1000 / ReceiversCount * CurrentInsertProgress / InsertProgress).ToString() }); } } } this.SendMailResault.Tables[0].Rows[CurrentReceiver][4] = "已发送"; } MySqlCommand unsetAuto_Increment = new MySqlCommand("alter table mail modify id int not null;", Conn); unsetAuto_Increment.ExecuteNonQuery(); unsetAuto_Increment = new MySqlCommand("alter table item_text modify id int not null;", Conn); unsetAuto_Increment.ExecuteNonQuery(); unsetAuto_Increment = new MySqlCommand("alter table item_instance modify guid int not null;", Conn); unsetAuto_Increment.ExecuteNonQuery(); this.Invoke(mi, new object[] { 4, "成功发送" + Inserted_mail.Count.ToString() + "封邮件" }); } catch (Exception err) { if (err.Message != string.Empty) { this.Invoke(mi, new object[] { 0, err.Message }); } } finally { Conn.Close(); } }
public void GetReceiverDataSet(object Database) { int splitPos = Database.ToString().IndexOf("|"); string accountDatabase = Database.ToString().Substring(0, splitPos); string charactersDatabase = Database.ToString().Substring(splitPos + 1, Database.ToString().Length - splitPos - 1); string SQL = "SELECT id,username FROM account;"; MyReceiverInvoke mi = new MyReceiverInvoke(invokeDataGridView); MySqlConnection Conn = new MySqlConnection(sManager.GetConnStr()); MySqlCommand setname = new MySqlCommand("set names 'gbk';", Conn); MySqlCommand chgDB = new MySqlCommand("USE " + accountDatabase.ToString() + ";", Conn); MySqlDataAdapter adp = new MySqlDataAdapter(SQL, Conn); try { this.Invoke(mi, new object[] { 1, "正在读取账号信息..." }); Conn.Open(); setname.ExecuteNonQuery(); setname.Dispose(); chgDB.ExecuteNonQuery(); chgDB.Dispose(); ReceiverAccountSet = new DataSet(); adp.Fill(ReceiverAccountSet); adp.Dispose(); if (ReceiverAccountSet.Tables[0].Rows.Count > 0) { this.Invoke(mi, new object[] { 1, "正在读取对应角色信息..." }); chgDB = new MySqlCommand("USE " + charactersDatabase.ToString() + ";", Conn); chgDB.ExecuteNonQuery(); chgDB.Dispose(); ReceiverListSet = new DataSet(); ReceiverListSet.Tables.Add("Receivers"); ReceiverListSet.Tables[0].Columns.Add("AccountID"); ReceiverListSet.Tables[0].Columns.Add("AccountName"); ReceiverListSet.Tables[0].Columns.Add("CharacterID"); ReceiverListSet.Tables[0].Columns.Add("CharacterName"); } else { throw new Exception("没有找到任何账号!"); } int CurrentAccount = 1; int TotalAccount = ReceiverAccountSet.Tables[0].Rows.Count; for (int i = 0; i < ReceiverAccountSet.Tables[0].Rows.Count; i++) { this.Invoke(mi, new object[] { 1, "正在读取对应角色信息..." + i.ToString() + "/" + TotalAccount.ToString() }); adp = new MySqlDataAdapter("SELECT guid,name FROM characters WHERE account ='" + ReceiverAccountSet.Tables[0].Rows[i]["id"].ToString() + "';", Conn); DataSet CurrentCharacter = new DataSet(); adp.Fill(CurrentCharacter); if (CurrentCharacter.Tables[0].Rows.Count > 0) { for (int cCharacter = 0; cCharacter < CurrentCharacter.Tables[0].Rows.Count; cCharacter++) { ReceiverListSet.Tables[0].Rows.Add(new object[] { ReceiverAccountSet.Tables[0].Rows[i]["id"].ToString(), ReceiverAccountSet.Tables[0].Rows[i]["username"].ToString(), CurrentCharacter.Tables[0].Rows[cCharacter]["guid"].ToString(), CurrentCharacter.Tables[0].Rows[cCharacter]["name"].ToString() }); } CurrentAccount++; } } if (CurrentAccount == 1) { this.Invoke(mi, new object[] { 1, "没有找到任何角色!" }); } else { this.Invoke(mi, new object[] { 2, string.Empty }); } } catch (Exception err) { this.Invoke(mi, new object[] { 0, err.Message }); } finally { Conn.Close(); } }