private void init(string connString)
            {
                connection = new MySqlConnection(connString);
                connection.Open();
                connection.ChangeDatabase(Server.MySQLDatabaseName);

                transaction = connection.BeginTransaction();
            }
        /// <summary>
        /// Execute a non-query on the database and return the generic type specified
        /// </summary>
        /// <typeparam name="T">Return type - only accepts String or Int</typeparam>
        /// <param name="EstablishedConnection">An open and established connection to a MySQL database</param>
        /// <param name="QueryString">SQL query to execute</param>
        /// <param name="Parameters">Dictionary of named parameters</param>
        /// <param name="ThrowException">Throw exception or swallow and return null</param>
        /// <param name="UseTransaction">Specify whether to use a transaction for this call</param>
        /// <returns>Data in the type specified</returns>
        internal static T DoDatabaseWork <T>(MySqlConnection EstablishedConnection, string QueryString, Dictionary <string, object> Parameters = null, bool ThrowException = true, bool UseTransaction = false, MySqlTransaction SqlTransaction = null)
        {
            return(DoDatabaseWork <T>(EstablishedConnection, QueryString,
                                      (cmd) =>
            {
                cmd.Parameters.AddAllParameters(Parameters);

                var executionWork = cmd.ExecuteNonQuery();

                if (typeof(T) == typeof(string))
                {
                    return executionWork.ToString();
                }
                else if (typeof(T) == typeof(int))
                {
                    return executionWork;
                }
                else
                {
                    return default;
                }
            },
                                      ThrowException: ThrowException, UseTransaction: UseTransaction || SqlTransaction != null, SqlTransaction: SqlTransaction));
        }
        /// <summary>
        /// Execute a non-query on the database with the specified parameters without returning a value
        /// </summary>
        /// <param name="EstablishedConnection">An open and established connection to a MySQL database</param>
        /// <param name="QueryString">SQL query to execute</param>
        /// <param name="Parameters">Dictionary of named parameters</param>
        /// <param name="ThrowException">Throw swallow exception</param>
        internal static void DoDatabaseWork(MySqlConnection EstablishedConnection, string QueryString, Dictionary <string, object> Parameters = null, bool ThrowException = true, bool UseTransaction = false, MySqlTransaction SqlTransaction = null)
        {
            DoDatabaseWork(EstablishedConnection, QueryString,
                           (cmd) =>
            {
                cmd.Parameters.AddAllParameters(Parameters);

                return(cmd.ExecuteNonQuery());
            },
                           ThrowException: ThrowException, UseTransaction: UseTransaction || SqlTransaction != null, SqlTransaction: SqlTransaction);
        }
 /// <summary>
 /// Execute a query on the database using the provided function, returning value of type T
 /// </summary>
 /// <typeparam name="T">Return type</typeparam>
 /// <param name="ConfigConnectionString">A ConnectionStringTypes type to reference a connection string defined in web.config</param>
 /// <param name="QueryString">SQL query to retrieve the data requested</param>
 /// <param name="ActionCallback">Customized function to execute when connected to the database</param>
 /// <param name="ThrowException">Throw exception or swallow and return default(T)</param>
 /// <param name="UseTransaction">Specify whether to use a transaction for this call</param>
 /// <returns>Data of any type T</returns>
 internal static T DoDatabaseWork <T>(Enum ConfigConnectionString, string QueryString, Func <MySqlCommand, object> ActionCallback, bool ThrowException = true, bool UseTransaction = false, MySqlTransaction SqlTransaction = null, bool AllowUserVariables = false)
 {
     using (var conn = ConnectionHelper.GetConnectionFromString(ConfigConnectionString, AllowUserVariables))
     {
         return(DoDatabaseWork <T>(conn, QueryString, ActionCallback, ThrowException: ThrowException, UseTransaction: UseTransaction || SqlTransaction != null, SqlTransaction: SqlTransaction));
     }
 }
 /// <summary>
 /// Execute a query on the database using the provided function without returning a value
 /// </summary>
 /// <param name="ConfigConnectionString">A ConnectionStringTypes type to reference a connection string defined in web.config</param>
 /// <param name="QueryString">SQL query to execute</param>
 /// <param name="ActionCallback">Customized function to execute when connected to the database</param>
 /// <param name="ThrowException">Throw or swallow exception</param>
 /// <param name="UseTransaction">Specify whether to use a transaction for this call</param>
 internal static void DoDatabaseWork(Enum ConfigConnectionString, string QueryString, Func <MySqlCommand, object> ActionCallback, bool ThrowException = true, bool UseTransaction = false, MySqlTransaction SqlTransaction = null, bool AllowUserVariables = false)
 {
     DoDatabaseWork <object>(ConfigConnectionString, QueryString, ActionCallback, ThrowException: ThrowException, UseTransaction: UseTransaction || SqlTransaction != null, SqlTransaction: SqlTransaction, AllowUserVariables: AllowUserVariables);
 }
        public Boolean NuevoEmpleado(DataTable dtEmpleado, DataTable dtDireccion, DataTable dtRh)
        {
            Boolean Valor      = false;
            int     idEmpleado = 0;

            MySqlConnection cnObj = new MySqlConnection();

            cnObj = objConexion.Conectar();
            if (cnObj != null)
            {
                MySqlTransaction Trans = cnObj.BeginTransaction();

                MySqlCommand cmdObj = new MySqlCommand();
                cmdObj.Connection = cnObj;

                string strSql;

                strSql  = "SELECT ";
                strSql += "MAX(id_empleado + 1) ";
                strSql += "FROM ";
                strSql += "empleado";

                cmdObj.CommandText = strSql;
                MySqlDataReader rdrObj = cmdObj.ExecuteReader();
                while (rdrObj.Read())
                {
                    idEmpleado = Convert.ToInt32(rdrObj[0].ToString());
                }
                rdrObj.Close();

                foreach (DataRow dRowEmpleado in dtEmpleado.Rows)
                {
                    strSql  = "INSERT ";
                    strSql += "INTO ";
                    strSql += "empleado ";
                    strSql += "(clave, ";
                    strSql += "a_paterno, ";
                    strSql += "a_materno, ";
                    strSql += "nombre, ";
                    strSql += "rfc, ";
                    strSql += "curp, ";
                    strSql += "nss, ";
                    strSql += "fecha_nac, ";
                    strSql += "alta, ";
                    strSql += "baja, ";
                    strSql += "estatus) ";
                    strSql += "VALUES ";
                    strSql += "('" + dRowEmpleado["clave"] + "', ";
                    strSql += "'" + dRowEmpleado["a_paterno"] + "', ";
                    strSql += "'" + dRowEmpleado["a_materno"] + "', ";
                    strSql += "'" + dRowEmpleado["nombre"] + "', ";
                    strSql += "'" + dRowEmpleado["rfc"] + "', ";
                    strSql += "'" + dRowEmpleado["curp"] + "', ";
                    strSql += "'" + dRowEmpleado["nss"] + "', ";
                    strSql += "'" + dRowEmpleado["fecha_nac"] + "', ";
                    strSql += "'" + dRowEmpleado["alta"] + "', ";
                    strSql += "'" + dRowEmpleado["baja"] + "', ";
                    strSql += "" + dRowEmpleado["estatus"] + ")";

                    cmdObj.CommandText = strSql;

                    try
                    {
                        cmdObj.ExecuteNonQuery();
                    }catch (MySqlException ex)
                    {
                        MessageBox.Show("Error al Ingresar los Datos, " + ex.Message, "Error Critico", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        Trans.Rollback();
                    }

                    foreach (DataRow dRowDireccion in dtDireccion.Rows)
                    {
                        strSql  = "INSERT ";
                        strSql += "INTO ";
                        strSql += "direccion ";
                        strSql += "(id_empleado, ";
                        strSql += "calle, ";
                        strSql += "num_ext, ";
                        strSql += "num_int, ";
                        strSql += "colonia, ";
                        strSql += "cod_postal, ";
                        strSql += "id_pais, ";
                        strSql += "id_estado, ";
                        strSql += "id_ciudad, ";
                        strSql += "telefono, ";
                        strSql += "correo, ";
                        strSql += "celular, ";
                        strSql += "contacto) ";
                        strSql += "VALUES ";
                        strSql += "(" + idEmpleado + ", ";
                        strSql += "'" + dRowDireccion["calle"] + "', ";
                        strSql += "'" + dRowDireccion["num_ext"] + "', ";
                        strSql += "'" + dRowDireccion["num_int"] + "', ";
                        strSql += "'" + dRowDireccion["colonia"] + "', ";
                        strSql += "'" + dRowDireccion["cod_postal"] + "', ";
                        strSql += "" + dRowDireccion["id_pais"] + ", ";
                        strSql += "" + dRowDireccion["id_estado"] + ", ";
                        strSql += "" + dRowDireccion["id_ciudad"] + ", ";
                        strSql += "'" + dRowDireccion["telefono"] + "', ";
                        strSql += "'" + dRowDireccion["correo"] + "', ";
                        strSql += "'" + dRowDireccion["celular"] + "', ";
                        strSql += "'" + dRowDireccion["contacto"] + "')";

                        cmdObj.CommandText = strSql;

                        try
                        {
                            cmdObj.ExecuteNonQuery();
                        }catch (MySqlException ex)
                        {
                            MessageBox.Show("Error al Ingresar los Datos, " + ex.Message, "Error Critico", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            Trans.Rollback();
                        }

                        foreach (DataRow dRowRh in dtRh.Rows)
                        {
                            strSql  = "INSERT ";
                            strSql += "INTO ";
                            strSql += "datos_rh ";
                            strSql += "(id_empleado, ";
                            strSql += "id_banco, ";
                            strSql += "cuenta_banco, ";
                            strSql += "id_jornada, ";
                            strSql += "id_sucursal, ";
                            strSql += "id_departamento, ";
                            strSql += "id_puesto, ";
                            strSql += "salario_diario, ";
                            strSql += "id_metodo_pago, ";
                            strSql += "id_contrato, ";
                            strSql += "id_tipo_salario) ";
                            strSql += "VALUES ";
                            strSql += "(" + idEmpleado + ", ";
                            strSql += "" + dRowRh["id_banco"] + ", ";
                            strSql += "'" + dRowRh["cuenta_banco"] + "', ";
                            strSql += "" + dRowRh["id_jornada"] + ", ";
                            strSql += "" + dRowRh["id_sucursal"] + ", ";
                            strSql += "" + dRowRh["id_departamento"] + ", ";
                            strSql += "" + dRowRh["id_puesto"] + ", ";
                            strSql += "'" + dRowRh["salario_diario"] + "', ";
                            strSql += "" + dRowRh["id_metodo_pago"] + ", ";
                            strSql += "" + dRowRh["id_contrato"] + ", ";
                            strSql += "" + dRowRh["id_tipo_salario"] + ")";

                            cmdObj.CommandText = strSql;

                            try
                            {
                                cmdObj.ExecuteNonQuery();
                            }catch (MySqlException ex)
                            {
                                MessageBox.Show("Error al Ingresar los Datos, " + ex.Message, "Error Critico", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                Trans.Rollback();
                            }
                        }
                    }

                    Trans.Commit();
                }
            }

            cnObj.Close();
            return(Valor);
        }
Exemple #7
0
 public void iniciarTransacao()
 {
     transacao = conexao.BeginTransaction();           //'indico o inicio da transacao'
 }
Exemple #8
0
 /// <summary>
 /// 根据事务的锁定级别开始一个新事务
 /// </summary>
 /// <param name="isoLevel">事务锁定级别</param>
 /// <returns>事务对象</returns>
 public IDbTransaction BeginTransaction(System.Data.IsolationLevel isoLevel)
 {
     m_Transaction = m_Connection.BeginTransaction(isoLevel);
     return(m_Transaction);
 }
Exemple #9
0
        public void AddItem()
        {
            using (var con = new MySqlConnection(connst))
            {
                con.Open();
                MySqlTransaction transaction = con.BeginTransaction(IsolationLevel.ReadCommitted);
                Guid             id          = Guid.NewGuid();

                try
                {
                    var query  = "";
                    var finish = 0;
                    var cmd    = new MySqlCommand(query, con);

                    cmd.CommandText = $@"INSERT INTO items (
                    Id,Owner,Title,Detail,StartTime,EndTime,StartPrice,NowPrice,DecidePrice,Category,Value,Finish
                    )
                    VALUES(
                    @Id,@Owner,@Title,@Detail,@StartTime,@EndTime,@StartPrice,@NowPrice,@DecidePrice,@Category,@Value,@Finish)";

                    cmd.Parameters.Add(new MySqlParameter("@Id", id));
                    cmd.Parameters.Add(new MySqlParameter("@Owner", this.Owner));
                    cmd.Parameters.Add(new MySqlParameter("@Title", this.Title));
                    cmd.Parameters.Add(new MySqlParameter("@Detail", this.Detail));
                    cmd.Parameters.Add(new MySqlParameter("@StartTime", this.StartTime));
                    cmd.Parameters.Add(new MySqlParameter("@EndTime", this.EndTime));
                    cmd.Parameters.Add(new MySqlParameter("@StartPrice", this.StartPrice));
                    cmd.Parameters.Add(new MySqlParameter("@NowPrice", this.StartPrice));
                    cmd.Parameters.Add(new MySqlParameter("@DecidePrice", this.DecidePrice));
                    cmd.Parameters.Add(new MySqlParameter("@Category", this.Category));
                    cmd.Parameters.Add(new MySqlParameter("@Value", this.Value));
                    cmd.Parameters.Add(new MySqlParameter("@Finish", finish));

                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                }

                foreach (String path in this.PicPath)
                {
                    try
                    {
                        var query = "";

                        var cmd = new MySqlCommand(query, con);

                        cmd.CommandText = $@"INSERT INTO images (
                                                ItemID,path
                                                )
                                                VALUES(
                                                @Id,@path)";

                        cmd.Parameters.Add(new MySqlParameter("@Id", id));
                        cmd.Parameters.Add(new MySqlParameter("@path", path));

                        cmd.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                    }
                }

                transaction.Commit();
            }
        }
Exemple #10
0
 public void DeleteCharacterSummons(MySqlConnection connection, MySqlTransaction transaction, string characterId)
 {
     ExecuteNonQuery(connection, transaction, "DELETE FROM charactersummon WHERE characterId=@characterId", new MySqlParameter("@characterId", characterId));
 }
Exemple #11
0
        internal void insertDB()
        {
            MySqlConnection             con          = null;
            MySqlTransaction            trans        = null;
            Dictionary <String, String> pwdictionary = passwordHash();


            try
            {
                con = new MySqlConnection(
                    ConfigurationManager.ConnectionStrings["webapp"].ConnectionString);

                con.Open();
                trans = con.BeginTransaction();
                MySqlCommand cmd = con.CreateCommand();
                cmd.CommandText = @"insert into 
                    `fe-nutzer`(Loginname,Aktiv,Vorname,Nachname,Email,Algorithmus,Stretch,Salt,Hash) 
                    values(@login,@aktiv,@vorname,@nachname,@email,@algorithmus,@stretch,@salt,@hash)";
                cmd.Parameters.AddWithValue("login", this.loginname);
                cmd.Parameters.AddWithValue("aktiv", false);
                cmd.Parameters.AddWithValue("vorname", this.vorname);
                cmd.Parameters.AddWithValue("nachname", this.nachname);
                cmd.Parameters.AddWithValue("email", this.email);
                cmd.Parameters.AddWithValue("algorithmus", pwdictionary["type"]);
                cmd.Parameters.AddWithValue("stretch", pwdictionary["iteration"]);
                cmd.Parameters.AddWithValue("salt", pwdictionary["salt"]);
                cmd.Parameters.AddWithValue("hash", pwdictionary["hash"]);
                cmd.ExecuteNonQuery();

                cmd.CommandText = @"insert into 
                `fh-angehöriger`(FeNutzerFhAngeFk) 
                values(@FeNutzerFhAngeFk)";
                cmd.Parameters.AddWithValue("FeNutzerFhAngeFk", cmd.LastInsertedId);
                cmd.ExecuteNonQuery();

                cmd.CommandText = @"insert into 
                `mitarbeiter`(NutzerFk,MA-Nummer,Telefon-Nummer,Büro) 
                values(@NutzerFk,@mnummer,@telefon,@buro)";
                cmd.Parameters.AddWithValue("NutzerFk", cmd.LastInsertedId);
                cmd.Parameters.AddWithValue("mnummer", this.manummer);
                cmd.Parameters.AddWithValue("telefon", this.telefon);
                cmd.Parameters.AddWithValue("buro", this.buro);
                cmd.ExecuteNonQuery();

                trans.Commit();
            }
            catch (MySqlException ex)
            {
                try
                {
                    trans.Rollback();
                }
                catch (MySqlException ex1)
                {
                    Console.WriteLine("Error: {0}", ex1.ToString());
                }

                Console.WriteLine("Error: {0}", ex.ToString());
            }
            finally
            {
                if (con != null)
                {
                    con.Close();
                }
            }
        }
 /// <summary>
 /// 开始一个事务
 /// </summary>
 public override void BeginTrans()
 {
     trans         = conn.BeginTransaction();
     inTransaction = true;
 }
Exemple #13
0
        }         // end of cmd_hist

//////////////////////////////////////////////////////////////////////
//
// Function  : cmd_send
//
// Purpose   : process a "send" command
//
// Inputs    : (none)
//
// Output    : appropriate info
//
// Returns   : nothing
//
// Example   : cmd_send();
//
// Notes     : (none)
//
//////////////////////////////////////////////////////////////////////

        static public void cmd_send()
        {
            int       amount       = 0;
            int       new_balance  = 0;
            int       new_balance2 = 0;
            string    username2    = "";
            string    sql          = "";
            SmartUser recipient;

            MySqlConnection  conn = null;
            MySqlTransaction tr   = null;

            if (!data_fields.ContainsKey("username2"))
            {
                send_response(1, "username2 was not specified", "");
            }
            username2 = data_fields["username2"];
            if (!user_index.ContainsKey(username2))
            {
                send_response(1, username2 + " is not a valid username", "");
            }
            int u_index = user_index[username2];

            recipient = UsersList[u_index];

            if (!data_fields.ContainsKey("amount"))
            {
                send_response(1, "amount was not specified", "");
            }

            if (Regex.IsMatch(data_fields["amount"], "^[0-9]+$"))
            {
                try
                {
                    amount = Convert.ToInt32(data_fields["amount"]);
                } catch (Exception ex)
                {
                    send_response(1, "Invalid amount", ex.ToString());
                }
            }
            else
            {
                send_response(1, "Invalid amount", "amount is not entirely numeric");
            }

            if (current_user.username == username2)
            {
                send_response(1, "You are not allowed to send to yourself", "");
            }

            if (current_user.balance < amount)
            {
                send_response(1, "Insufficient fundds", "try a smaller amount");
            }
            if (recipient.status != "active")
            {
                send_response(1, username2 + " is not an active user. Request denied.", "");
            }

            try
            {
                conn = new MySqlConnection(connect_string);
                conn.Open();
                tr = conn.BeginTransaction();

                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection  = conn;
                cmd.Transaction = tr;

// First create the transaction history record

                cmd.CommandText = "UPDATE Authors SET Name='Leo Tolstoy' WHERE Id=1";
                new_balance     = current_user.balance - amount;
                new_balance2    = recipient.balance + amount;
                sql             = "INSERT INTO smart_users_history " +
                                  "(mod_date,void_date,user1,user1_balance,user2,user2_balance,operation,status,amount) " +
                                  "VALUES ( now() , now() , " + current_user.id + " , " + new_balance +
                                  " , " + recipient.id + " , " + new_balance2 + " , 'send' , 'active' , " +
                                  amount + ")";
                cmd.CommandText = sql;
                cmd.ExecuteNonQuery();

// Next update the information for the sender
                sql = "UPDATE smart_users set balance = " + new_balance +
                      " WHERE id = " + current_user.id;
                cmd.CommandText = sql;
                cmd.ExecuteNonQuery();

// Lastly update the information for the recipient
                sql = "UPDATE smart_users set balance = " + new_balance2 +
                      " WHERE id = " + recipient.id;
                cmd.CommandText = sql;
                cmd.ExecuteNonQuery();

                tr.Commit();
            } catch (MySqlException ex)
            {
                try
                {
                    tr.Rollback();
                } catch (MySqlException ex1)
                {
                    send_response(1, "Database Rollback Error" + ex1.ToString(), ex.ToString());
                }
                send_response(1, "Database Error", ex.ToString() + "\n" + sql);
            } finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
            }             // finally
            send_response(0, "SUCCESS", "send request was successfull");

            return;
        }         // cmd_send
        public Tuple <bool, string> Post(RelocationEntity entity)
        {
            MySqlCommand cmd = new MySqlCommand();
            //  ManageSQLConnection sqlConnection = new ManageSQLConnection();
            MySqlConnection  sqlConnection    = new MySqlConnection();
            MySqlTransaction objTrans         = null;
            string           connectionString = GlobalVariables.ConnectionString;

            using (sqlConnection = new MySqlConnection(connectionString))
            {
                DataSet ds = new DataSet();

                cmd = new MySqlCommand();
                try
                {
                    if (sqlConnection.State == 0)
                    {
                        sqlConnection.Open();
                    }
                    objTrans        = sqlConnection.BeginTransaction();
                    cmd.Transaction = objTrans;
                    cmd.Connection  = sqlConnection;
                    cmd.CommandText = "InsertRelocationDetails";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@Id", entity.Id);
                    cmd.Parameters.AddWithValue("@Location", entity.Location);
                    cmd.Parameters.AddWithValue("@Rcode", entity.Rcode);
                    cmd.Parameters.AddWithValue("@Dcode", entity.Dcode);
                    cmd.Parameters.AddWithValue("@Status", entity.Status);
                    cmd.Parameters.AddWithValue("@ShopCode", entity.ShopCode);
                    cmd.Parameters.AddWithValue("@Reason", entity.Reason);
                    cmd.Parameters.AddWithValue("@FromAddress", entity.FromAddress);
                    cmd.Parameters.AddWithValue("@ToAddress", entity.ToAddress);
                    cmd.Parameters.AddWithValue("@DocDate", entity.DocDate);
                    cmd.Parameters.AddWithValue("@CompletedDate", entity.CompletedDate);
                    cmd.Parameters.AddWithValue("@NewShopNo", entity.NewShopNo);
                    cmd.ExecuteNonQuery();
                    objTrans.Commit();
                    cmd.Parameters.Clear();
                    cmd.Dispose();
                    //Mail sending
                    MailSending  mail   = new MailSending();
                    CommonEntity common = new CommonEntity
                    {
                        ToMailid    = "*****@*****.**",
                        ToCC        = "[email protected] ",
                        Subject     = "Relocaiton request",
                        BodyMessage = "Hi Rajaram, <br/> Reason :" + entity.Reason + " <br/>"
                                      + "From Address = " + entity.FromAddress + "<br/>"
                                      + "To Address = " + entity.ToAddress + "<br/>"
                                      + "Relocation Date = " + entity.Dcode + "<br/><br/>"
                                      + "Regards" + "<br/>"
                                      + "SI Team"
                    };
                    mail.SendForAll(common);

                    return(new Tuple <bool, string>(true, JsonConvert.SerializeObject(ds)));
                }
                catch (Exception ex)
                {
                    AuditLog.WriteError(ex.Message + " : " + ex.StackTrace);
                    objTrans.Rollback();
                    return(new Tuple <bool, string>(false, "Exception occured"));
                }
                finally
                {
                    sqlConnection.Close();
                    cmd.Dispose();
                    ds.Dispose();
                }
            }
        }
Exemple #15
0
        /// <summary>
        /// 批量执行
        /// </summary>
        /// <param name="batchSize"></param>
        /// <param name="timeout"></param>
        public override void Execute(int batchSize = 10000, int timeout = 10 * 1000)
        {
            MySqlConnection newConnection = (MySqlConnection)_database.CreateConnection();

            try
            {
                _dataTable = ToDataTable(_list);

                if (_dataTable == null || _dataTable.Rows.Count == 0)
                {
                    return;
                }

                string tmpPath = Path.Combine(Path.GetTempPath(), _dataTable.TableName + ".csv");

                DBContext.WriteToCSV(_dataTable, tmpPath, false);

                newConnection.Open();

                using (MySqlTransaction tran = newConnection.BeginTransaction())
                {
                    MySqlBulkLoader bulk = new MySqlBulkLoader(newConnection)
                    {
                        FieldTerminator         = ",",
                        FieldQuotationCharacter = '"',
                        EscapeCharacter         = '"',
                        LineTerminator          = "\r\n",
                        FileName            = tmpPath,
                        Local               = true,
                        NumberOfLinesToSkip = 0,
                        TableName           = _dataTable.TableName,
                        CharacterSet        = "utf8"
                    };
                    try
                    {
                        bulk.Columns.AddRange(_dataTable.Columns.Cast <DataColumn>().Select(colum => colum.ColumnName).ToList());
                        var size = bulk.Load();
                        tran.Commit();
                    }
                    catch (MySqlException ex)
                    {
                        if (tran != null)
                        {
                            tran.Rollback();
                        }

                        throw ex;
                    }
                    finally
                    {
                        File.Delete(tmpPath);
                    }
                }
            }

            finally
            {
                if (newConnection.State == ConnectionState.Open)
                {
                    newConnection.Close();
                }
                _list.Clear();
            }
        }
        void RebuildRankMapping( Dictionary<int, Rank> databaseRankMapping, MySqlTransaction transaction ) {
            // change all rank indices to temporary values
            using( MySqlCommand updateRankIndexCmd = new MySqlCommand( UpdateRankIndexCommandText, connection, transaction ) ) {
                updateRankIndexCmd.Parameters.Add( "newRank", MySqlType.SmallInt );
                updateRankIndexCmd.Parameters.Add( "oldRank", MySqlType.SmallInt );
                foreach( var pair in databaseRankMapping ) {
                    updateRankIndexCmd.Parameters[0].Value = GetRankTempIndex( pair.Value );
                    updateRankIndexCmd.Parameters[1].Value = pair.Key;
                    updateRankIndexCmd.ExecuteNonQuery();
                }
            }

            // change all rank indices to new permanent values
            transaction.ExecuteNonQuery( PermRankIncidesCommandText );

            // change all previous_rank indices to temporary values
            using( MySqlCommand updatePreviousRankIndexCmd = new MySqlCommand( UpdatePreviousRankIndexCommandText, connection, transaction ) ) {
                updatePreviousRankIndexCmd.Parameters.Add( "newRank", MySqlType.SmallInt );
                updatePreviousRankIndexCmd.Parameters.Add( "oldRank", MySqlType.SmallInt );
                foreach( var pair in databaseRankMapping ) {
                    updatePreviousRankIndexCmd.Parameters[0].Value = GetRankTempIndex( pair.Value );
                    updatePreviousRankIndexCmd.Parameters[1].Value = pair.Key;
                    updatePreviousRankIndexCmd.ExecuteNonQuery();
                }
            }

            // change all previous_rank indices to new permanent values
            transaction.ExecuteNonQuery( PermPreviousRankIndicesCommandText );

            // recreate the rank_mapping table
            transaction.ExecuteNonQuery( TruncateRankMappingCommandText );

            using( MySqlCommand addRankMappingCmd = new MySqlCommand( AddRankMappingCommandText, connection, transaction ) ) {
                addRankMappingCmd.Parameters.Add( "index", MySqlType.SmallInt );
                addRankMappingCmd.Parameters.Add( "name", MySqlType.VarChar, 64 );
                foreach( var pair in rankMapping ) {
                    addRankMappingCmd.Parameters[0].Value = pair.Key;
                    addRankMappingCmd.Parameters[1].Value = pair.Value.FullName;
                    addRankMappingCmd.ExecuteNonQuery();
                }
            }
        }
 public UnitOfWork(string connectionString)
 {
     _cn = new MySqlConnection(connectionString);
     _cn.Open();
     _txn = _cn.BeginTransaction();
 }
        public Boolean saveGoodsEntryData(String TRDR_ID, String ITEM_NAME, String WT_BOX_TYPE, String WT_TXT, String LOT_1, String LOT_2, String LOT_3, String LOT_4, String LOT_5,
                                          String LOGISTIC_DETAILS, String SHORT_BOX, String QTY_RCVD, String ORIGIN, String VEHICLE_NO, String FARE_RATE, String TOTAL_FARE, String RECV_DATE, String TRDR_FNAME_TMARK, String LOT_NO_SHORT)
        {
            this.TRDR_ID          = TRDR_ID.Trim();
            this.ITEM_NAME        = ITEM_NAME.Trim();
            this.WT_BOX_TYPE      = WT_BOX_TYPE.Trim();
            this.WT_TXT           = WT_TXT.Trim();
            this.LOT_1            = LOT_1;
            this.LOT_2            = LOT_2;
            this.LOT_3            = LOT_3;
            this.LOT_4            = LOT_4;
            this.LOT_5            = LOT_5;
            this.LOGISTIC_DETAILS = LOGISTIC_DETAILS;
            this.VEHICLE_NO       = VEHICLE_NO;
            this.FARE_RATE        = FARE_RATE;
            this.TOTAL_FARE       = TOTAL_FARE;
            this.SHORT_BOX        = SHORT_BOX;
            this.ORIGIN           = ORIGIN;
            this.RECV_DATE        = RECV_DATE;
            this.QTY_RCVD         = QTY_RCVD;
            this.TRDR_FNAME_TMARK = TRDR_FNAME_TMARK;
            this.LOT_NO_SHORT     = LOT_NO_SHORT;

            //Entry of goods_entry details
            String G_ENTRY_ID = "GETRYID" + GenerateUniqueID.RandomString(8);

            try{
                con = dataBaseConnection.getMySqlDBConnection();
                con.Open();
                MySqlCommand myCommand = con.CreateCommand();

                // Start a local transaction
                myTrans = con.BeginTransaction();
                // Must assign both transaction object and connection
                // to Command object for a pending local transaction
                myCommand.Connection  = con;
                myCommand.Transaction = myTrans;

                insertQuery = "insert into " + tableName + " values('" + G_ENTRY_ID + "','" + TRDR_ID + "','" + ITEM_NAME + "','" + WT_TXT + "','" + LOT_1
                              + "','" + LOT_2 + "','" + LOT_3 + "','" + LOT_4 + "','" + LOT_5 + "','" + LOGISTIC_DETAILS + "','" + VEHICLE_NO + "','" + FARE_RATE + "','"
                              + TOTAL_FARE + "','" + QTY_RCVD + "','" + ORIGIN + "','" + RECV_DATE + "','" + SHORT_BOX + "','" + WT_BOX_TYPE + "','" + TRDR_FNAME_TMARK + "','" + LOT_NO_SHORT + "');";
                Console.WriteLine("Query:" + insertQuery);
                if (!(dataAccessUtility.iscolumnAlreadyPresent(tableName, "G_ENTRY_ID", G_ENTRY_ID)))
                {
                    insertData(insertQuery, con);
                    Console.WriteLine("Goods Entry Inserted");
                }
                else
                {
                    throw (new CustomException("Some Thing Wrong !! Please Try Again"));
                }
                //Entry of stock details for each Lot
                String    stockTable    = "stock_details";
                String    LOTID_1       = "LOT" + GenerateUniqueID.RandomString(8);
                String    LOTID_2       = "LOT" + GenerateUniqueID.RandomString(8);
                String    LOTID_3       = "LOT" + GenerateUniqueID.RandomString(8);
                String    LOTID_4       = "LOT" + GenerateUniqueID.RandomString(8);
                String    LOTID_5       = "LOT" + GenerateUniqueID.RandomString(8);
                String    STOCK_ID      = "STOCK" + GenerateUniqueID.RandomString(8);
                String[]  lotIds        = new String[] { LOTID_1, LOTID_2, LOTID_3, LOTID_4, LOTID_5 };
                String [] lotBoxes      = new String[] { this.LOT_1, this.LOT_2, this.LOT_3, this.LOT_4, this.LOT_5 };
                String    SHORT_LOT_IND = "N";
                if (!(String.IsNullOrEmpty(this.LOT_NO_SHORT)))
                {
                    SHORT_LOT_IND = "Y," + lotIds[int.Parse(this.LOT_NO_SHORT) - 1];
                }
                insertQuery = "insert into " + stockTable + " values('" + G_ENTRY_ID + "','" + LOTID_1 + "','" + LOTID_2 + "','" + LOTID_3 + "','" + LOTID_4
                              + "','" + LOTID_5 + "','" + STOCK_ID + "','" + SHORT_LOT_IND + "');";

                if (!(dataAccessUtility.iscolumnAlreadyPresent(stockTable, "STOCK_ID", STOCK_ID)))
                {
                    insertData(insertQuery, con);
                    Console.WriteLine("StockQuery:" + insertQuery);
                }
                else
                {
                    MessageBox.Show("Some Thing Wrong !! Please Try Again");
                    return(false);
                }

                //Entry of lots details into lot details
                String lotDetailsTable = "lot_status";
                if (SHORT_LOT_IND.Contains("Y"))
                {
                    int index    = int.Parse(this.LOT_NO_SHORT) - 1;
                    int shortbox = int.Parse(this.SHORT_BOX);
                    lotBoxes[index] = (int.Parse(lotBoxes[index]) - shortbox).ToString();
                }

                for (int i = 0; i < lotIds.Length; i++)
                {
                    int lotSerial = 0;
                    if (String.IsNullOrEmpty(lotBoxes[i]))
                    {
                        lotSerial = i + 1;
                        continue;
                    }

                    lotSerial   = i + 1;
                    insertQuery = "insert into " + lotDetailsTable + " values('" + lotIds[i] + "','" + lotBoxes[i] + "','" + G_ENTRY_ID + "','0','" + lotBoxes[i] + "','" + lotSerial + "','N');";
                    insertData(insertQuery, con);
                    Console.WriteLine("Lot_details_Query:" + insertQuery);
                }
                myTrans.Commit();
                Console.WriteLine("All records are written to database.");
                finalResult = true;
                return(finalResult);
            }
            catch (Exception e)
            {
                finalResult = false;
                try
                {
                    myTrans.Rollback();
                    return(finalResult);
                }
                catch (MySqlException ex)
                {
                    if (myTrans.Connection != null)
                    {
                        Console.WriteLine("An exception of type " + ex.GetType() +
                                          " was encountered while attempting to roll back the transaction.");
                    }
                }

                Console.WriteLine("An exception of type " + e.GetType() + " was encountered while inserting the data.");
                Console.WriteLine("Neither record was written to database.");
                return(finalResult);
            }
            finally
            {
                con.Close();
            }
        }
        private string UPDATE_ORDER()
        {
            MySqlCommand     cmd     = new MySqlCommand();
            MySqlTransaction myTrans = null;

            try
            {
                CONNECTION.open_connection();
                cmd.Connection  = CONNECTION.CON;
                myTrans         = CONNECTION.CON.BeginTransaction(IsolationLevel.ReadCommitted);
                cmd.Transaction = myTrans;

                cmd.CommandText = "UPDATE kot_order SET special_note=@special_note,tax_percentage=@tax_percentage,total_price=@total_price WHERE order_no=@order_no";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@order_no", LBL_ORDER_NO.Text);
                cmd.Parameters.AddWithValue("@special_note", TXT_SPECIAL_NOTE.Text);
                cmd.Parameters.AddWithValue("@tax_percentage", tax_amount);
                cmd.Parameters.AddWithValue("@total_price", Convert.ToDouble(LBL_TOT_PRICE.Text));
                cmd.ExecuteNonQuery();

                using (MySqlDataAdapter adp = new MySqlDataAdapter("SELECT koi.item_stock_id,koi.order_qty,koi.unit_price,koi.total_price,i.qty_handle FROM kot_order_item koi JOIN stock s ON s.stock_id=koi.item_stock_id JOIN item i ON s.item_code=i.item_id WHERE koi.order_no=@order_no", CONNECTION.CON))
                {
                    adp.SelectCommand.Parameters.Clear();
                    adp.SelectCommand.Parameters.AddWithValue("@order_no", LBL_ORDER_NO.Text);
                    DataTable tbl = new DataTable();
                    adp.Fill(tbl);
                    if (tbl.Rows.Count > 0)
                    {
                        foreach (DataRow row in tbl.Rows)
                        {
                            if (row.Field <string>(4) == "1")
                            {
                                cmd.CommandText = "UPDATE stock SET qty=qty+@order_qty WHERE stock_id=@stock_id";
                                cmd.Parameters.Clear();
                                cmd.Parameters.AddWithValue("@order_qty", row.Field <double>(1));
                                cmd.Parameters.AddWithValue("@stock_id", row.Field <Int32>(0));
                                cmd.ExecuteNonQuery();
                            }
                        }

                        cmd.CommandText = "DELETE FROM kot_order_item WHERE order_no=@order_no";
                        cmd.Parameters.Clear();
                        cmd.Parameters.AddWithValue("@order_no", LBL_ORDER_NO.Text);
                        cmd.ExecuteNonQuery();
                    }
                }


                foreach (DataGridViewRow row in DGV_ORDER_ITEMS.Rows)
                {
                    cmd.CommandText = "INSERT INTO kot_order_item(item_stock_id,order_qty,unit_price,total_price,order_no,cost_price) VALUES(@item_stock_id,@order_qty,@unit_price,@total_price,@order_no,@cost_price)";
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddWithValue("@item_stock_id", row.Cells[0].Value);
                    cmd.Parameters.AddWithValue("@order_qty", Convert.ToDouble(row.Cells[4].Value));
                    cmd.Parameters.AddWithValue("@unit_price", Convert.ToDouble(row.Cells[5].Value));
                    cmd.Parameters.AddWithValue("@total_price", Convert.ToDouble(row.Cells[6].Value));
                    cmd.Parameters.AddWithValue("@order_no", LBL_ORDER_NO.Text);
                    cmd.Parameters.AddWithValue("@cost_price", Convert.ToDouble(row.Cells[8].Value));
                    cmd.ExecuteNonQuery();

                    if (row.Cells[7].Value.ToString() == "1")
                    {
                        cmd.CommandText = "UPDATE stock SET qty=qty-@order_qty WHERE stock_id=@stock_id";
                        cmd.Parameters.Clear();
                        cmd.Parameters.AddWithValue("@order_qty", Convert.ToDouble(row.Cells[4].Value));
                        cmd.Parameters.AddWithValue("@stock_id", row.Cells[0].Value);
                        cmd.ExecuteNonQuery();
                    }
                }

                cmd.CommandText = "INSERT INTO kot_order_update_log(updated_by,updated_date,updated_time) VALUES(@updated_by,@updated_date,@updated_time)";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@updated_by", CLS_CURRENT_LOGGER.LOGGED_IN_USERID);
                cmd.Parameters.AddWithValue("@updated_date", DateTime.Now.ToString("yyyy-MM-dd"));
                cmd.Parameters.AddWithValue("@updated_time", DateTime.Now.ToString("HH:mm:ss"));
                cmd.ExecuteNonQuery();

                myTrans.Commit();
                return("done");
            }
            catch (Exception ex)
            {
                myTrans.Rollback();
                MSGBOX mdg = new MSGBOX(MessageAlertHeder.Error(), ex.Message, MessageAlertImage.Error());
                mdg.ShowDialog();
                return("error");
            }
        }
        /// <summary>
        /// 检查更新Tags标签及关系,带事务
        /// </summary>
        public void Update(MySqlConnection conn, MySqlTransaction trans, string tags_title, int channel_id, int article_id)
        {
            int tagsId = 0;
            //检查该Tags标签是否已存在
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select top 1 id from " + databaseprefix + "article_tags");
            strSql.Append(" where title=@title");
            MySqlParameter[] parameters =
            {
                new MySqlParameter("@title", MySqlDbType.VarChar, 100)
            };
            parameters[0].Value = tags_title;
            object obj1 = DbHelperMySql.GetSingle(conn, trans, strSql.ToString(), parameters);

            if (obj1 != null)
            {
                //存在则将ID赋值
                tagsId = Convert.ToInt32(obj1);
            }
            //如果尚未创建该Tags标签则创建
            if (tagsId == 0)
            {
                StringBuilder strSql2 = new StringBuilder();
                strSql2.Append("insert into " + databaseprefix + "article_tags(");
                strSql2.Append("title,is_red,sort_id,add_time)");
                strSql2.Append(" values (");
                strSql2.Append("@title,@is_red,@sort_id,@add_time)");
                strSql2.Append(";select @@IDENTITY");
                MySqlParameter[] parameters2 =
                {
                    new MySqlParameter("@title",    MySqlDbType.VarChar,  100),
                    new MySqlParameter("@is_red",   MySqlDbType.TinyText,   1),
                    new MySqlParameter("@sort_id",  MySqlDbType.Int32,      4),
                    new MySqlParameter("@add_time", MySqlDbType.DateTime)
                };
                parameters2[0].Value = tags_title;
                parameters2[1].Value = 0;
                parameters2[2].Value = 99;
                parameters2[3].Value = DateTime.Now;
                object obj2 = DbHelperMySql.GetSingle(conn, trans, strSql2.ToString(), parameters2);
                if (obj2 != null)
                {
                    //插入成功后返回ID
                    tagsId = Convert.ToInt32(obj2);
                }
            }
            //匹配Tags标签与文章之间的关系
            if (tagsId > 0)
            {
                StringBuilder strSql3 = new StringBuilder();
                strSql3.Append("insert into " + databaseprefix + "article_tags_relation(");
                strSql3.Append("channel_id,article_id,tag_id)");
                strSql3.Append(" values (");
                strSql3.Append("@channel_id,@article_id,@tag_id)");
                MySqlParameter[] parameters3 =
                {
                    new MySqlParameter("@channel_id", MySqlDbType.Int32, 4),
                    new MySqlParameter("@article_id", MySqlDbType.Int32, 4),
                    new MySqlParameter("@tag_id",     MySqlDbType.Int32, 4)
                };
                parameters3[0].Value = channel_id;
                parameters3[1].Value = article_id;
                parameters3[2].Value = tagsId;
                DbHelperMySql.GetSingle(conn, trans, strSql3.ToString(), parameters3);
            }
        }
        internal static MySqlParameter[] DeriveParameters(this MySqlConnection connection, MySqlCommand cmd, bool includeReturnValueParameter = false, MySqlTransaction transaction = null)
        {
            if (cmd == null)
            {
                throw new ArgumentNullException("SqlCommand");
            }

            var textParser = new ObjectNameParser(cmd.CommandText);

            // Hack to check for schema name in the spName
            string schemaName = "dbo";
            string spName     = textParser.UnquotedString;
            int    firstDot   = spName.IndexOf('.');

            if (firstDot > 0)
            {
                schemaName = cmd.CommandText.Substring(0, firstDot);
                spName     = spName.Substring(firstDot + 1);
            }

            var alreadyOpened = connection.State == ConnectionState.Open;

            if (!alreadyOpened)
            {
                connection.Open();
            }

            try
            {
                MySqlCommandBuilder.DeriveParameters(cmd);
            }
            finally
            {
                if (!alreadyOpened)
                {
                    connection.Close();
                }
            }

            if (!includeReturnValueParameter && cmd.Parameters.Count > 0)
            {
                cmd.Parameters.RemoveAt(0);
            }

            MySqlParameter[] discoveredParameters = new MySqlParameter[cmd.Parameters.Count];

            cmd.Parameters.CopyTo(discoveredParameters, 0);

            // Init the parameters with a DBNull value
            foreach (MySqlParameter discoveredParameter in discoveredParameters)
            {
                discoveredParameter.Value = DBNull.Value;
            }

            return(discoveredParameters);
        }
Exemple #22
0
 /**
  * 开始事务
  * */
 public void beginTrans()
 {
     this.openConn();
     this.isTrans = true;
     this.trans   = this.conn.BeginTransaction();
 }
Exemple #23
0
 public ProductSubAttribute(MySqlConnection Connection, MySqlTransaction Transaction)
     : base(Connection, Transaction)
 {
 }
        public static string Insert(string football_round_chain_id, string sys_user_id, string football_match_id, string match_result_id, string football_match_ids, string USER, string TOKEN)
        {
            if (!AccessToken.Read(USER, TOKEN))
            {
                return("登录超时");
            }

            IDictionary <string, string> fdict = new Dictionary <string, string>();

            fdict.Add("id", football_round_chain_id);
            fdict.Add("delete_flag", "IS NULL");
            DataSet ds = DBHelper.Select("football_round_chain", "participant_amount,name", string.Empty, fdict, "and");

            if (ds.Tables[0].Rows.Count == 0)
            {
                return("竞猜不存在");
            }
            string participant_amount        = ds.Tables[0].Rows[0]["participant_amount"].ToString();
            string football_round_chain_name = ds.Tables[0].Rows[0]["name"].ToString();

            string[] football_match_idarr = football_match_ids.Split(',');
            if (football_match_idarr.Length != Convert.ToInt32(participant_amount))
            {
                return("接龙长度异常");
            }

            fdict = new Dictionary <string, string>();
            fdict.Add("id", sys_user_id);
            fdict.Add("delete_flag", "IS NULL");
            ds = DBHelper.Select("sys_user", "balance", string.Empty, fdict, "and");
            if (ds.Tables[0].Rows.Count == 0)
            {
                return("用户不存在");
            }
            if (Convert.ToInt32(ds.Tables[0].Rows[0]["balance"]) < 6)
            {
                return("爱心不足6元");
            }

            using (MySqlConnection dbConnection = new MySqlConnection(DBHelper.strConnection))
            {
                dbConnection.Open();
                using (MySqlTransaction trans = dbConnection.BeginTransaction())
                {
                    IDictionary <string, string> dict = new Dictionary <string, string>();
                    dict.Add("football_round_chain_id", football_round_chain_id);
                    dict.Add("sys_user_id", sys_user_id);
                    dict.Add("participant_need", (Convert.ToInt32(participant_amount) - 1).ToString());
                    dict.Add("chain_vote_status_id", "1");
                    dict.Add("vote_datetime", DateTime.Now.ToString());
                    DBHelper.Insert("football_round_chain_vote", dict, dbConnection, trans);

                    string football_round_chain_vote_id = DBHelper.SelectNewId(dbConnection, trans);

                    dict = new Dictionary <string, string>();
                    dict.Add("football_round_chain_vote_id", football_round_chain_vote_id);
                    dict.Add("sys_user_id", sys_user_id);
                    dict.Add("football_match_id", football_match_id);
                    dict.Add("match_result_id", match_result_id);
                    dict.Add("vote_datetime", DateTime.Now.ToString());
                    DBHelper.Insert("football_round_chain_vote_invite", dict, dbConnection, trans);

                    foreach (string football_match_idi in football_match_idarr)
                    {
                        if (football_match_idi.Equals(football_match_id))
                        {
                            continue;
                        }

                        dict = new Dictionary <string, string>();
                        dict.Add("football_round_chain_vote_id", football_round_chain_vote_id);
                        dict.Add("football_match_id", football_match_idi);
                        DBHelper.Insert("football_round_chain_vote_invite", dict, dbConnection, trans);
                    }

                    dict = new Dictionary <string, string>();
                    dict.Add("balance", "数字相减-6");
                    fdict = new Dictionary <string, string>();
                    fdict.Add("id", sys_user_id);
                    DBHelper.Update("sys_user", dict, fdict, "and", dbConnection, trans);

                    sys_user_balance_change.Insert(sys_user_id, "2", "-6", "发起接龙“" + football_round_chain_name + "”", "football_round_chain_vote", football_round_chain_vote_id, dbConnection, trans);


                    trans.Commit();
                }
            }
            return(string.Empty);
        }
 /// <summary>
 /// Execute a query on the database using the provided function without returning a value
 /// </summary>
 /// <param name="EstablishedConnection">An open and established connection to a MySQL database</param>
 /// <param name="QueryString">SQL query to execute</param>
 /// <param name="ActionCallback">Customized function to execute when connected to the database</param>
 /// <param name="ThrowException">Throw or swallow exception</param>
 /// <param name="UseTransaction">Specify whether to use a transaction for this call</param>
 internal static void DoDatabaseWork(MySqlConnection EstablishedConnection, string QueryString, Func <MySqlCommand, object> ActionCallback, bool ThrowException = true, bool UseTransaction = false, MySqlTransaction SqlTransaction = null)
 {
     DoDatabaseWork <object>(EstablishedConnection, QueryString, ActionCallback, ThrowException: ThrowException, UseTransaction: UseTransaction || SqlTransaction != null, SqlTransaction: SqlTransaction);
 }
        public static string End(string id, string USER, string TOKEN)
        {
            if (!AccessToken.Read(USER, TOKEN))
            {
                return("登录超时");
            }

            IDictionary <string, string> fdict = new Dictionary <string, string>();

            fdict.Add("football_round_chain_vote_id", id);
            DataSet ds = DBHelper.Select("football_round_chain_vote_invite_view", "*", string.Empty, fdict, "and");

            if (ds.Tables[0].Rows.Count == 0)
            {
                return("找不到该记录");
            }
            string price = ds.Tables[0].Rows[0]["price"].ToString();
            string title = ds.Tables[0].Rows[0]["football_round_name"] + " " + ds.Tables[0].Rows[0]["football_round_chain_name"];

            string chain_vote_status_id = "2";

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                if (dr["vote_sys_user_id"].ToString().Length == 0)
                {
                    return("接龙未完成");
                }
                if (dr["match_result_id"].ToString().Length == 0)
                {
                    return("仍有比赛未完成");
                }
                if (!dr["match_result_id"].Equals(dr["vote_match_result_id"]))
                {
                    chain_vote_status_id = "3";
                }
            }

            using (MySqlConnection dbConnection = new MySqlConnection(DBHelper.strConnection))
            {
                dbConnection.Open();
                using (MySqlTransaction trans = dbConnection.BeginTransaction())
                {
                    IDictionary <string, string> dict = new Dictionary <string, string>();
                    dict.Add("chain_vote_status_id", chain_vote_status_id);
                    fdict = new Dictionary <string, string>();
                    fdict.Add("id", id);
                    DBHelper.Update("football_round_chain_vote", dict, fdict, "and", dbConnection, trans);

                    if (chain_vote_status_id.Equals("2") && (price.Length > 0))
                    {
                        foreach (DataRow dr in ds.Tables[0].Rows)
                        {
                            dict = new Dictionary <string, string>();
                            dict.Add("balance", "数字相加+" + price);
                            fdict = new Dictionary <string, string>();
                            fdict.Add("id", dr["vote_sys_user_id"].ToString());
                            DBHelper.Update("sys_user", dict, fdict, "and", dbConnection, trans);

                            sys_user_balance_change.Insert(dr["vote_sys_user_id"].ToString(), "2", price, title, "football_round_chain_vote", id, dbConnection, trans);
                        }
                    }

                    trans.Commit();
                }
            }
            return(string.Empty);
        }
        /// <summary>
        /// Execute a query on the database using the provided function, returning value of type T
        /// </summary>
        /// <typeparam name="T">Return type</typeparam>
        /// <param name="EstablishedConnection">An open and established connection to a MySQL database</param>
        /// <param name="QueryString">SQL query to retrieve the data requested</param>
        /// <param name="ActionCallback">Customized function to execute when connected to the database</param>
        /// <param name="ThrowException">Throw exception or swallow and return default(T)</param>
        /// <param name="UseTransaction">Specify whether to use a transaction for this call</param>
        /// <returns>Data of any type T</returns>
        internal static T DoDatabaseWork <T>(MySqlConnection EstablishedConnection, string QueryString, Func <MySqlCommand, object> ActionCallback, bool ThrowException = true, bool UseTransaction = false, MySqlTransaction SqlTransaction = null)
        {
            var internalOpen         = false;          // indicates whether the connection was already open or not
            var openedNewTransaction = false;          // indicates whether a new transaction was created here or not
            var currentTransaction   = SqlTransaction; // preload current transaction

            // reset the last execution error
            LastExecutionException = null;

            try
            {
                // if the connection isn't open, then open it and record that we did that
                if (EstablishedConnection.State != ConnectionState.Open)
                {
                    EstablishedConnection.Open();
                    internalOpen = true;
                }

                // if the caller wants to use transactions but they didn't provide one, create a new one
                if (UseTransaction && SqlTransaction == null)
                {
                    currentTransaction   = EstablishedConnection.BeginTransaction();
                    openedNewTransaction = true;
                }

                // execute the SQL
                using (var cmd = new MySqlCommand(QueryString, EstablishedConnection))
                {
                    cmd.CommandTimeout = int.MaxValue;

                    // execute whatever code the caller provided
                    var result = (T)ActionCallback(cmd);

                    // if we opened the transaction here, just commit it because we're going to be closing it right away
                    if (openedNewTransaction)
                    {
                        currentTransaction?.Commit();
                    }

                    return(result);
                }
            }
            catch (MySqlException mysqlEx)             // use special handling for MySQL exceptions
            {
                // there was an error, roll back the transaction
                if (UseTransaction)
                {
                    currentTransaction?.Rollback();
                }

                // if we want exceptions to be thrown, rethrow the current one, otherwise just record the error
                if (ThrowException)
                {
                    throw new Exception(mysqlEx.Message, mysqlEx);
                }
                else
                {
                    LastExecutionException = mysqlEx;

                    return(default);
 /// <summary>
 /// 执行操作,返回受影响的行数(存储过程)
 /// </summary>
 /// <param name="tran">已存在的事务</param>
 /// <param name="cmdText">存储过程名称</param>
 /// <param name="commandParameters">执行命令需要的参数</param>
 /// <returns>返回受影响的行数</returns>
 public static int ExecuteNonQueryProc(MySqlTransaction trans, string cmdText, params MySqlParameter[] commandParameters)
 {
     return(ExecuteNonQuery(trans, CommandType.StoredProcedure, cmdText, commandParameters));
 }
 /// <summary>
 /// Execute a non-query on the database and return the number of rows affected
 /// </summary>
 /// <typeparam name="T">Return type - only accepts String or Int</typeparam>
 /// <param name="ConfigConnectionString">A ConnectionStringTypes type to reference a connection string defined in web.config</param>
 /// <param name="QueryString">SQL query to execute</param>
 /// <param name="Parameters">Dictionary of named parameters</param>
 /// <param name="ThrowException">Throw exception or swallow and return null</param>
 /// <param name="UseTransaction">Specify whether to use a transaction for this call</param>
 /// <returns>Number of rows affected</returns>
 internal static T DoDatabaseWork <T>(Enum ConfigConnectionString, string QueryString, Dictionary <string, object> Parameters = null, bool ThrowException = true, bool UseTransaction = false, MySqlTransaction SqlTransaction = null, bool AllowUserVariables = false)
 {
     using (var conn = ConnectionHelper.GetConnectionFromString(ConfigConnectionString, AllowUserVariables))
     {
         return(DoDatabaseWork <T>(conn, QueryString, Parameters: Parameters, ThrowException: ThrowException, UseTransaction: UseTransaction || SqlTransaction != null, SqlTransaction: SqlTransaction));
     }
 }
Exemple #30
0
        /// <summary>
        /// 执行MySql和Oracle滴混合事务
        /// </summary>
        /// <param name="list">SQL命令行列表</param>
        /// <param name="oracleCmdSqlList">Oracle命令行列表</param>
        /// <returns>执行结果 0-由于SQL造成事务失败 -1 由于Oracle造成事务失败 1-整体事务执行成功</returns>
        public static int ExecuteSqlTran(List <CommandInfo> list, List <CommandInfo> oracleCmdSqlList)
        {
            using (MySqlConnection conn = new MySqlConnection(connectionString))
            {
                conn.Open();
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = conn;
                MySqlTransaction tx = conn.BeginTransaction();
                cmd.Transaction = tx;
                try
                {
                    foreach (CommandInfo myDE in list)
                    {
                        string           cmdText  = myDE.CommandText;
                        MySqlParameter[] cmdParms = (MySqlParameter[])myDE.Parameters;
                        PrepareCommand(cmd, conn, tx, cmdText, cmdParms);
                        if (myDE.EffentNextType == EffentNextType.SolicitationEvent)
                        {
                            if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
                            {
                                tx.Rollback();
                                throw new Exception("违背要求" + myDE.CommandText + "必须符合select count(..的格式");
                                //return 0;
                            }

                            object obj    = cmd.ExecuteScalar();
                            bool   isHave = false;
                            if (obj == null && obj == DBNull.Value)
                            {
                                isHave = false;
                            }
                            isHave = Convert.ToInt32(obj) > 0;
                            if (isHave)
                            {
                                //引发事件
                                myDE.OnSolicitationEvent();
                            }
                        }
                        if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)
                        {
                            if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
                            {
                                tx.Rollback();
                                throw new Exception("SQL:违背要求" + myDE.CommandText + "必须符合select count(..的格式");
                                //return 0;
                            }

                            object obj    = cmd.ExecuteScalar();
                            bool   isHave = false;
                            if (obj == null && obj == DBNull.Value)
                            {
                                isHave = false;
                            }
                            isHave = Convert.ToInt32(obj) > 0;

                            if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)
                            {
                                tx.Rollback();
                                throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须大于0");
                                //return 0;
                            }
                            if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)
                            {
                                tx.Rollback();
                                throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须等于0");
                                //return 0;
                            }
                            continue;
                        }
                        int val = cmd.ExecuteNonQuery();
                        if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)
                        {
                            tx.Rollback();
                            throw new Exception("SQL:违背要求" + myDE.CommandText + "必须有影响行");
                            //return 0;
                        }
                        cmd.Parameters.Clear();
                    }
                    string oraConnectionString = PubConstant.GetConnectionString("ConnectionStringPPC");
                    bool   res = OracleHelper.ExecuteSqlTran(oraConnectionString, oracleCmdSqlList);
                    if (!res)
                    {
                        tx.Rollback();
                        throw new Exception("执行失败");
                        // return -1;
                    }
                    tx.Commit();
                    return(1);
                }
                catch (MySql.Data.MySqlClient.MySqlException e)
                {
                    tx.Rollback();
                    throw e;
                }
                catch (Exception e)
                {
                    tx.Rollback();
                    throw e;
                }
            }
        }
 void GenerateSchema( MySqlTransaction transaction ) {
     using( MySqlCommand insertMetadataCmd = new MySqlCommand( InsertMetadataCommandText, connection, transaction ) ) {
         insertMetadataCmd.Parameters.Add( "format_version", MySqlType.Int );
         insertMetadataCmd.Parameters.Add( "server_version_string", MySqlType.VarChar, 255 );
         insertMetadataCmd.Parameters.Add( "last_modified", DateType );
         insertMetadataCmd.Parameters[0].Value = FormatVersion;
         insertMetadataCmd.Parameters[1].Value = Updater.CurrentRelease.VersionString;
         insertMetadataCmd.Parameters[2].Value = DateTime.UtcNow.ToUnixTime();
         insertMetadataCmd.ExecuteNonQuery();
     }
     transaction.ExecuteNonQuery( PlayersTableSchema );
     transaction.ExecuteNonQuery( RankMappingTableSchema );
 }
Exemple #32
0
        /// <summary>
        /// 执行多条SQL语句,实现数据库事务。
        /// </summary>
        /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>
        public static int ExecuteSqlTran(System.Collections.Generic.List <CommandInfo> cmdList)
        {
            using (MySqlConnection conn = new MySqlConnection(connectionString))
            {
                conn.Open();
                using (MySqlTransaction trans = conn.BeginTransaction())
                {
                    MySqlCommand cmd = new MySqlCommand();
                    try
                    { int count = 0;
                      //循环
                      foreach (CommandInfo myDE in cmdList)
                      {
                          string           cmdText  = myDE.CommandText;
                          MySqlParameter[] cmdParms = (MySqlParameter[])myDE.Parameters;
                          PrepareCommand(cmd, conn, trans, cmdText, cmdParms);

                          if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)
                          {
                              if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
                              {
                                  trans.Rollback();
                                  return(0);
                              }

                              object obj    = cmd.ExecuteScalar();
                              bool   isHave = false;
                              if (obj == null && obj == DBNull.Value)
                              {
                                  isHave = false;
                              }
                              isHave = Convert.ToInt32(obj) > 0;

                              if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)
                              {
                                  trans.Rollback();
                                  return(0);
                              }
                              if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)
                              {
                                  trans.Rollback();
                                  return(0);
                              }
                              continue;
                          }
                          int val = cmd.ExecuteNonQuery();
                          count += val;
                          if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)
                          {
                              trans.Rollback();
                              return(0);
                          }
                          cmd.Parameters.Clear();
                      }
                      trans.Commit();
                      return(count); }
                    catch
                    {
                        trans.Rollback();
                        throw;
                    }
                }
            }
        }
Exemple #33
0
            private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, string cmdText, Object[] cmdParms)
            {
                if (conn.State != ConnectionState.Open)
                    conn.Open();
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                if (trans != null)
                    cmd.Transaction = trans;
                cmd.CommandType = CommandType.Text;//cmdType;
                if (cmdParms != null)
                {

                    foreach (MySqlParameter parameter in cmdParms)
                    {
                        if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                            (parameter.Value == null))
                        {
                            parameter.Value = DBNull.Value;
                        }
                        cmd.Parameters.Add(parameter);
                    }
                }
            }
        /// <summary>
        /// Initializes a new instance of the <see cref="MySqlTransactionalDataSource" /> class.
        /// </summary>
        /// <param name="dataSource">The data source.</param>
        /// <param name="forwardEvents">if set to <c>true</c> [forward events].</param>
        /// <param name="connection">The connection.</param>
        /// <param name="transaction">The transaction.</param>
        internal MySqlTransactionalDataSource(MySqlDataSource dataSource, bool forwardEvents, MySqlConnection connection, MySqlTransaction transaction)
            : base(new MySqlDataSourceSettings {
            DefaultCommandTimeout = dataSource.DefaultCommandTimeout, StrictMode = dataSource.StrictMode, SuppressGlobalEvents = dataSource.SuppressGlobalEvents || forwardEvents
        })
        {
            Name = dataSource.Name;

            m_BaseDataSource = dataSource;
            m_Connection     = connection;
            m_Transaction    = transaction;

            if (forwardEvents)
            {
                ExecutionStarted  += (sender, e) => dataSource.OnExecutionStarted(e);
                ExecutionFinished += (sender, e) => dataSource.OnExecutionFinished(e);
                ExecutionError    += (sender, e) => dataSource.OnExecutionError(e);
                ExecutionCanceled += (sender, e) => dataSource.OnExecutionCanceled(e);
            }
            AuditRules = dataSource.AuditRules;
            UserValue  = dataSource.UserValue;
        }
 public override void Dispose()
 {
     transaction.Dispose();
     connection.Dispose();
     transaction = null;
     connection = null;
 }
 public ITransaction NewTransaction()
 {
     MySqlTransaction transaction = new MySqlTransaction( transactionsContext.NewRow() );
     transaction.Provider = this;
     return transaction;
 }