示例#1
0
        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();
            }
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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();
            }
        }