Пример #1
0
 private void SQLTransaction(MySqlConnection conn, MySqlCommand cmd, DBMailStruct mail)
 {
     using (MySqlTransaction trans = conn.BeginTransaction())
     {
         try
         {
             cmd.Transaction = trans;
             cmd.ExecuteNonQuery();
             trans.Commit();
             mail.isSolve = true;
             if (mail.sendTo != null)
             {
                 mail.sendTo(mail);
             }
         }
         catch (Exception e)
         {
             trans.Rollback();
             if (mail.sendTo != null)
             {
                 mail.isSolve = false;
                 mail.sendTo(mail);
             }
             throw e;
         }
     }
 }
Пример #2
0
 public void addNewCommand(DBMailStruct mail)
 {
     //if (!mail.command.StartsWith("select"))
     //{
     //    Utility.WriteDBCommandToLog.instance.writeACommand(mail.command);
     //}
     //直接處理
     Task t1 = Task.Factory.StartNew(() =>
     {
         DBManager.instance.makeCommand(mail);
     });
 }
Пример #3
0
 private void SQLAdapter(MySqlCommand cmd, DBMailStruct mail)
 {
     using (MySqlDataAdapter adapter = new MySqlDataAdapter(cmd))
     {
         DataTable dataTable = new DataTable();
         adapter.Fill(dataTable);
         mail.dataTable = dataTable;
         mail.isSolve   = true;
         if (mail.sendTo != null)
         {
             mail.sendTo(mail);
         }
     }
 }
Пример #4
0
 public void recycleMail(DBMailStruct mail)
 {
     lock (obj)
     {
         mail.init();
         //確保沒有重複回收
         if (!mailList.Contains(mail))
         {
             mailList.Add(mail);
         }
         else
         {
             Console.WriteLine("maillist  :  it's already been recycle! ");
         }
     }
     //Console.WriteLine("maillist count : " + mailList.Count);
 }
Пример #5
0
 public DBMailStruct getNewMail()
 {
     lock (obj)
     {
         DBMailStruct mail;
         if (mailList.Count > 0)
         {
             mail = mailList[0];
             mailList.RemoveAt(0);
         }
         else
         {
             mail = new DBMailStruct();
         }
         count++;
         mail.init();
         //Console.WriteLine("mail manager get mail times : " + count);
         //   Console.WriteLine("maillist count : " + mailList.Count);
         return(mail);
     }
 }
Пример #6
0
 private void makeCommand(DBMailStruct mail)
 {
     try
     {
         using (MySqlConnection conn = new MySqlConnection(connectSetting()))
         {
             conn.Open();
             //Console.WriteLine("MyDbConn : command = " + mail.command);
             using (MySqlCommand cmd = new MySqlCommand(mail.command, conn))
             {
                 if (mail.commandType == CommandType.select)
                 {
                     SQLAdapter(cmd, mail);
                 }
                 else
                 {
                     SQLTransaction(conn, cmd, mail);
                 }
             }
         }
     }
     catch (Exception e)
     {
         //System.Diagnostics.Debug.WriteLine("SQL error = " + mail.command);
         //Utility.Logging.SqlErrorLog(mail.command, ex);
         System.Diagnostics.Debug.WriteLine(e.Message);
         //throw e;
         if (ExceptionHandler != null)
         {
             ExceptionHandler(e);
         }
     }
     finally
     {
         //使用完了就回收
         DBMailManager.instance.recycleMail(mail);
     }
 }