コード例 #1
0
ファイル: CrudCliente.cs プロジェクト: oscarito9410/wpHotel
        public override async Task<bool> updateAsync(object table)
        {
            var cliente = this.getCastCliente(table);
            using (MySqlConnection MidbConexion = new MySqlConnection(this.dbPath))
            {
                MySqlCommand miComando = new MySqlCommand()
                {
                    Connection = MidbConexion,
                    CommandText = @"UPDATE hotelcolonia.cliente SET  numpersonas=?numpersonas,nombre=?nombre,
                                   lugar_procedencia=?lugar_procedencia,correo=?correo,numtarjeta=?numtarjeta,telefono=?telefono
                                   WHERE id_cliente=?id_cliente"

                };
                MidbConexion.Open();
               
                miComando.Parameters.AddWithValue("?id_cliente", cliente.id);
                miComando.Parameters.AddWithValue("?numpersonas", cliente.acompaniantes);
                miComando.Parameters.AddWithValue("?nombre", cliente.nombre);
                miComando.Parameters.AddWithValue("?lugar_procedencia", cliente.origen);
                miComando.Parameters.AddWithValue("?correo", cliente.email);
                miComando.Parameters.AddWithValue("?numtarjeta", cliente.tarjeta);
                miComando.Parameters.AddWithValue("?telefono", cliente.telefono);
                await miComando.ExecuteNonQueryAsync();


                await new CrudHabitacion().updateAsync(cliente.selectedHabitacion.numero, true);

            }
            return true;
        }
コード例 #2
0
ファイル: CrudCliente.cs プロジェクト: oscarito9410/wpHotel
        public override async Task<bool> addAsync(object table)
        {
            var cliente = this.getCastCliente(table);
            using (MySqlConnection MidbConexion = new MySqlConnection(this.dbPath))
            {
                MySqlCommand miComando = new MySqlCommand()
                {
                    Connection = MidbConexion,
                    CommandText = @"INSERT INTO cliente(id_cliente,numpersonas,nombre,lugar_procedencia,correo,numtarjeta,telefono) 
                                    VALUES (?id_cliente,?numpersonas,?nombre,?lugar_procedencia,?correo,?numtarjeta,?telefono)"
                };
                MidbConexion.Open();
                miComando.Parameters.AddWithValue("?id_cliente", cliente.id);
                miComando.Parameters.AddWithValue("?numpersonas", cliente.acompaniantes);
                miComando.Parameters.AddWithValue("?nombre", cliente.nombre);
                miComando.Parameters.AddWithValue("?telefono", cliente.telefono);
                miComando.Parameters.AddWithValue("?lugar_procedencia", cliente.origen);
                miComando.Parameters.AddWithValue("?correo", cliente.email);
                miComando.Parameters.AddWithValue("?numtarjeta", cliente.tarjeta);
                await miComando.ExecuteNonQueryAsync();
                miComando.Parameters.Clear();
                miComando.CommandText = @"INSERT INTO control_reservacion(clv_reservacion,dia_entrada,dia_salida,hora_entrada,hora_salida,id_cliente) 
                                    VALUES (?clv_reservacion,?dia_entrada,?dia_salida,?hora_entrada,?hora_salida,?id_cliente)";

                int claveReservacion = await this.getMaxAsync("control_reservacion", "clv_reservacion");
                miComando.Parameters.AddWithValue("?clv_reservacion", claveReservacion);
                miComando.Parameters.AddWithValue("?dia_entrada", cliente.dateEntrada);
                miComando.Parameters.AddWithValue("?dia_salida", cliente.dateSalida);
                miComando.Parameters.AddWithValue("?hora_entrada", cliente.dateEntrada.ToShortTimeString());
                miComando.Parameters.AddWithValue("?hora_salida", cliente.dateSalida.ToShortTimeString());
                miComando.Parameters.AddWithValue("?id_cliente", cliente.id);
                await miComando.ExecuteNonQueryAsync();

                miComando.Parameters.Clear();

                miComando.CommandText = @"INSERT INTO detalle_reservacion(clv_reservacion,num_habitacion) 
                                        VALUES(?clv_reservacion,?num_habitacion)";

                miComando.Parameters.AddWithValue("?clv_reservacion", claveReservacion);
                miComando.Parameters.AddWithValue("?num_habitacion", cliente.selectedHabitacion.numero);

                await miComando.ExecuteNonQueryAsync();
                miComando.Parameters.Clear();
    
                int claveGasto = await this.getMaxAsync("gastos","clv_gasto");
                miComando.CommandText = "INSERT INTO gastos(clv_gasto,id_cliente) VALUES (?clv_gasto,?id_cliente)";
                miComando.Parameters.AddWithValue("clv_gasto", claveGasto);
                miComando.Parameters.AddWithValue("?id_cliente", cliente.id);
                await miComando.ExecuteNonQueryAsync();

                await new CrudHabitacion().updateAsync(cliente.selectedHabitacion.numero, true);

                return true;

            }
        }
コード例 #3
0
        public async Task ExecutarComandoSQLAsync(string comandoSql)
        {
            MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection(commStr);
            await conn.OpenAsync();

            MySql.Data.MySqlClient.MySqlCommand comando = new MySql.Data.MySqlClient.MySqlCommand(comandoSql, conn);
            await comando.ExecuteNonQueryAsync();

            await conn.CloseAsync();
        }
コード例 #4
0
ファイル: CrudOrden.cs プロジェクト: oscarito9410/wpHotel
        public override async Task<bool> addAsync(object table)
        {
            var orden = this.getTable(table);
            using (MySqlConnection MidbConexion = new MySqlConnection(this.dbPath))
            {
                MidbConexion.Open();
                MySqlCommand miComando = new MySqlCommand()
                {
                    Connection = MidbConexion,
                    CommandText = "INSERT INTO orden(clv_orden,nummesa,fecha,id_cliente) VALUES (?clv_orden,?nummesa,?fecha,?id_cliente)"
                };
                miComando.Parameters.AddWithValue("?clv_orden", orden.claveOrden);
                miComando.Parameters.AddWithValue("?nummesa", orden.numMesa);
                miComando.Parameters.AddWithValue("?fecha", orden.fechaOrden);
                miComando.Parameters.AddWithValue("?id_cliente", orden.idCliente);
                await miComando.ExecuteNonQueryAsync();
                miComando.Parameters.Clear();
                foreach (var producto in listProducto)
                {
                    for (int i = producto.cantidad;i>0;i--)
                    {
                        miComando.CommandText = "INSERT INTO detalle_orden(clv_orden,clv_producto) VALUES(?clv_orden,?clv_producto)";
                        miComando.Parameters.AddWithValue("?clv_orden", orden.claveOrden);
                        miComando.Parameters.AddWithValue("?clv_producto", producto.clvProducto);
                        await miComando.ExecuteNonQueryAsync();
                        miComando.Parameters.Clear();
                    }
                   
                }
                
                miComando.CommandText = "INSERT INTO detalle_gasto(clv_gasto,clv_orden) VALUES(?clv_gasto,?clv_orden)";
                miComando.Parameters.AddWithValue("?clv_gasto",await new CrudCliente().getClienteGasto(orden.idCliente));
                miComando.Parameters.AddWithValue("?clv_orden", orden.claveOrden);
                await miComando.ExecuteNonQueryAsync();
                return true;

            }
        }
コード例 #5
0
ファイル: CrudUsuario.cs プロジェクト: oscarito9410/wpHotel
 public override async Task<bool> addAsync(object table)
 {
     var usuario = getCastUsuario(table);
     using (MySqlConnection MidbConexion = new MySqlConnection(this.dbPath))
     {
         MidbConexion.Open();//Abrimos la conexion para realizar los siguientes pasos
         // 'Declaro comando para poder realizar mis instrucciones sql
         MySqlCommand micomando = new MySqlCommand { Connection = MidbConexion, CommandText = "INSERT INTO usuario(nombre,password) VALUES (?Nom,?Pass)" };
         micomando.Parameters.AddWithValue("?Nom", usuario.nombre);
         micomando.Parameters.AddWithValue("?Pass", usuario.password);
         await micomando.ExecuteNonQueryAsync();
         return true;
     }
 }
コード例 #6
0
ファイル: db_dev.cs プロジェクト: mattmarillac/pear-app-store
        public async void add_app_to_store(string title, string description, double cost, int dev_id, bool in_app, string package_loc)
        {
            int retryCount = 3;
            bool success = false;
            MySqlCommand cmd = new MySqlCommand();
            while (retryCount > 0 && !success)
            {
                try
                {
                    conn.Open();

                    //->insert relevant data
                    cmd.Connection = conn;
                    cmd.CommandText = "COMMIT; ";
                    cmd.CommandText += "INSERT INTO software(title, description, dev_id, cost, in_app_purchases, package_location)" +
                        "VALUES(@title, @description, @dev_id, @cost, @in_app_purchases, @package_location);";
                    cmd.CommandText += "COMMIT; ";
                    cmd.Prepare();
                    //->add parameters to query
                    cmd.Parameters.AddWithValue("@title", title);
                    cmd.Parameters.AddWithValue("@description", description);
                    cmd.Parameters.AddWithValue("@dev_id", dev_id);       //->Datetime now in current timezone
                    cmd.Parameters.AddWithValue("@cost", cost);       //-> we are not actually using a bank, so its always a valid payment
                    cmd.Parameters.AddWithValue("@in_app_purchases", in_app);
                    cmd.Parameters.AddWithValue("@package_location", package_loc);

                    await cmd.ExecuteNonQueryAsync();
                    success = true;

                    if (conn != null)
                        conn.Close();
                    return;
                }
                catch (MySqlException ex)
                {
                    rollback(cmd);
                    Thread.Sleep(500);
                    if (ex.Number != 1205)
                    {
                        // a sql exception that is not a deadlock 
                        throw;
                    }
                    // Add delay here if you wish. 
                    retryCount--;
                    if (retryCount == 0) throw;
                }
            }
        }
コード例 #7
0
ファイル: CrudProducto.cs プロジェクト: oscarito9410/wpHotel
 public override async Task<bool> deleteAsync(object table)
 {
     var producto = getCastProducto(table);
     using (MySqlConnection MidbConexion = new MySqlConnection(this.dbPath))
     {
         MidbConexion.Open();
         MySqlCommand miComando = new MySqlCommand()
         {
             Connection = MidbConexion,
             CommandText = @"DELETE FROM PRODUCTO WHERE clv_producto=?clv_producto"
         };
         miComando.Parameters.AddWithValue("?clv_producto", producto.clvProducto);
         await miComando.ExecuteNonQueryAsync();
         return true;
     }
 }
コード例 #8
0
ファイル: CrudCliente.cs プロジェクト: oscarito9410/wpHotel
 public override async Task<bool> deleteAsync(object table)
 {
     var cliente = this.getCastCliente(table);
     using (MySqlConnection MidbConexion = new MySqlConnection(this.dbPath))
     {
         //http://blog.openalfa.com/como-trabajar-con-restricciones-de-clave-externa-en-mysql
         MySqlCommand miComando = new MySqlCommand()
         {
             Connection = MidbConexion,
             CommandText = "DELETE FROM cliente WHERE id_cliente =?id_cliente"
         };
         MidbConexion.Open();
         miComando.Parameters.AddWithValue("?id_cliente", cliente.id);
         await miComando.ExecuteNonQueryAsync();
     }
     return true;
 }
コード例 #9
0
        public override async Task<bool> updateAsync(object table)
        {
            var habitacion = getCastHabitacion(table);
            using (MySqlConnection MidbConexion = new MySqlConnection(this.dbPath))
            {
                MidbConexion.Open();
                MySqlCommand miComando = new MySqlCommand()
                {
                    Connection = MidbConexion,
                    CommandText = "UPDATE habitacion SET estado=?estado,tamanio=?tamanio,precio=?precio,telefono=?telefono WHERE num_habitacion=?habitacion"
                };
                miComando.Parameters.AddWithValue("?estado", habitacion.estado == true ? "Ocupado" : "Disponible");
                miComando.Parameters.AddWithValue("?tamanio", habitacion.tamanio);
                miComando.Parameters.AddWithValue("?precio", habitacion.precio);
                miComando.Parameters.AddWithValue("?telefono", habitacion.telefono);
                miComando.Parameters.AddWithValue("?habitacion", habitacion.numero);
                await miComando.ExecuteNonQueryAsync();
                return true;

            }
        }
コード例 #10
0
        public override async Task<bool> addAsync(object table)
        {
            var habitacion = getCastHabitacion(table);
            using (MySqlConnection MidbConexion = new MySqlConnection(this.dbPath))
            {
                MidbConexion.Open();
                MySqlCommand miComando = new MySqlCommand()
                {
                    Connection = MidbConexion,
                    CommandText = "INSERT INTO habitacion(num_habitacion,estado,tamanio,precio,telefono) VALUES (?habitacion,?estado,?tamanio,?precio,?telefono)"
                };
                miComando.Parameters.AddWithValue("?estado", habitacion.estado == true ? "Ocupado" : "Disponible");
                miComando.Parameters.AddWithValue("?tamanio", habitacion.tamanio);
                miComando.Parameters.AddWithValue("?precio", Convert.ToDouble(habitacion.precio));
                miComando.Parameters.AddWithValue("?telefono", habitacion.telefono);
                miComando.Parameters.AddWithValue("?habitacion", habitacion.numero);
                await miComando.ExecuteNonQueryAsync();
                return true;

            }
        }
コード例 #11
0
ファイル: CrudProducto.cs プロジェクト: oscarito9410/wpHotel
 public override async Task<bool> updateAsync(object table)
 {
     var producto = getCastProducto(table);
     using (MySqlConnection MidbConexion = new MySqlConnection(this.dbPath))
     {
         MidbConexion.Open();
         MySqlCommand miComando = new MySqlCommand()
         {
             Connection = MidbConexion,
             CommandText = @"UPDATE PRODUCTO  SET descripcion=?descripcion, precio=?precio, cantidad=?cantidad, img_producto=?img_producto,categoria=?categoria  
                            WHERE clv_producto=?clv_producto"
         };
         miComando.Parameters.AddWithValue("?clv_producto", producto.clvProducto);
         miComando.Parameters.AddWithValue("?descripcion", producto.descripcion);
         miComando.Parameters.AddWithValue("?precio", producto.precio);
         miComando.Parameters.AddWithValue("?cantidad", producto.cantidad);
         miComando.Parameters.AddWithValue("?categoria", producto.categoria);
         miComando.Parameters.AddWithValue("?img_producto", producto.imgProducto);
         await miComando.ExecuteNonQueryAsync();
         return true;
     }
 }
コード例 #12
0
        private async ValueTask <MySqlTransaction> BeginDbTransactionAsync(IsolationLevel isolationLevel, IOBehavior ioBehavior, CancellationToken cancellationToken)
        {
            if (State != ConnectionState.Open)
            {
                throw new InvalidOperationException("Connection is not open.");
            }
            if (CurrentTransaction is object)
            {
                throw new InvalidOperationException("Transactions may not be nested.");
            }
#if !NETSTANDARD1_3
            if (m_enlistedTransaction is object)
            {
                throw new InvalidOperationException("Cannot begin a transaction when already enlisted in a transaction.");
            }
#endif

            string isolationLevelValue = isolationLevel switch
            {
                IsolationLevel.ReadUncommitted => "read uncommitted",
                IsolationLevel.ReadCommitted => "read committed",
                IsolationLevel.RepeatableRead => "repeatable read",
                IsolationLevel.Serializable => "serializable",

                // "In terms of the SQL:1992 transaction isolation levels, the default InnoDB level is REPEATABLE READ." - http://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-model.html
                IsolationLevel.Unspecified => "repeatable read",

                _ => throw new NotSupportedException("IsolationLevel.{0} is not supported.".FormatInvariant(isolationLevel))
            };

            using (var cmd = new MySqlCommand("set transaction isolation level " + isolationLevelValue + "; start transaction;", this))
                await cmd.ExecuteNonQueryAsync(ioBehavior, cancellationToken).ConfigureAwait(false);

            var transaction = new MySqlTransaction(this, isolationLevel);
            CurrentTransaction = transaction;
            return(transaction);
        }
コード例 #13
0
        /// <summary>
        /// 在【主库】执行
        /// </summary>
        /// <param name="cmdType"></param>
        /// <param name="cmdText"></param>
        /// <param name="cmdParms"></param>
        /// <returns></returns>
        async public Task <int> ExecuteNonQueryAsync(CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
        {
            DateTime dt     = DateTime.Now;
            string   logtxt = "";
            Object <MySqlConnection> conn = null;
            MySqlCommand             cmd  = PrepareCommandAsync(cmdType, cmdText, cmdParms, ref logtxt);
            DateTime  logtxt_dt           = DateTime.Now;
            int       val = 0;
            Exception ex  = null;

            try {
                if (cmd.Connection == null)
                {
                    cmd.Connection = (conn = await this.MasterPool.GetAsync()).Value;
                }
                val = await cmd.ExecuteNonQueryAsync();
            } catch (Exception ex2) {
                ex = ex2;
            }

            if (conn != null)
            {
                if (IsTracePerformance)
                {
                    logtxt_dt = DateTime.Now;
                }
                this.MasterPool.Return(conn, ex);
                if (IsTracePerformance)
                {
                    logtxt += $"ReleaseConnection: {DateTime.Now.Subtract(logtxt_dt).TotalMilliseconds}ms Total: {DateTime.Now.Subtract(dt).TotalMilliseconds}ms";
                }
            }
            LoggerException(this.MasterPool, cmd, ex, dt, logtxt);
            cmd.Parameters.Clear();
            return(val);
        }
コード例 #14
0
        internal async Task RollbackAsync(IOBehavior ioBehavior, CancellationToken cancellationToken)
        {
            VerifyNotDisposed();
            if (m_isFinished)
            {
                throw new InvalidOperationException("Already committed or rolled back.");
            }

            if (m_connection.CurrentTransaction == this)
            {
                using (var cmd = new MySqlCommand("rollback", m_connection, this))
                    await cmd.ExecuteNonQueryAsync(ioBehavior, cancellationToken).ConfigureAwait(false);
                m_connection.CurrentTransaction = null;
                m_isFinished = true;
            }
            else if (m_connection.CurrentTransaction != null)
            {
                throw new InvalidOperationException("This is not the active transaction.");
            }
            else if (m_connection.CurrentTransaction == null)
            {
                throw new InvalidOperationException("There is no active transaction.");
            }
        }
コード例 #15
0
        private async Task CommitAsync(IOBehavior ioBehavior, CancellationToken cancellationToken)
        {
            VerifyNotDisposed();
            if (Connection is null)
            {
                throw new InvalidOperationException("Already committed or rolled back.");
            }

            if (Connection.CurrentTransaction == this)
            {
                using (var cmd = new MySqlCommand("commit", Connection, this))
                    await cmd.ExecuteNonQueryAsync(ioBehavior, cancellationToken).ConfigureAwait(false);
                Connection.CurrentTransaction = null;
                Connection = null;
            }
            else if (Connection.CurrentTransaction is object)
            {
                throw new InvalidOperationException("This is not the active transaction.");
            }
            else if (Connection.CurrentTransaction is null)
            {
                throw new InvalidOperationException("There is no active transaction.");
            }
        }
コード例 #16
0
        // MySql
        private static void InsertIntoMySqlDatabase(MySqlConnection con, QueryLanguage ql)
        {
            try
            {
                con.Open();
            }
            catch (MySqlException)
            {
                MessageBox.Show("Unable to open connection to MySQL Database while attempting to insert data. Please recheck your credentials and try again", "Potential User Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                mw.ResetButtons();
            }


            List<BibleCollection> LanguageCollection = new List<BibleCollection>();
            LanguageCollection = MemoryStorage.FullDataCollection[(int)ql].BibleCollection;

            StringBuilder sb = new StringBuilder();

            bool firstStringFinished = false;

            foreach (var fc in LanguageCollection)
            {
                if (!firstStringFinished)
                {
                    sb.Append("INSERT INTO " + ql.ToString() + "(Book, Chapter, Verse, Word) " + Environment.NewLine + " VALUES('" + fc.CurrentBook + "', " + fc.Chapter + ", " + fc.Verse + ", \"" + fc.Word + "\")" + Environment.NewLine);
                    firstStringFinished = true;
                }
                else
                {
                    sb.Append(", ('" + fc.CurrentBook + "', " + fc.Chapter + ", " + fc.Verse + ", \"" + fc.Word + "\")" + Environment.NewLine);
                }
                MemoryStorage.CurrentQuery++;
                mw.UpdateQueryProgress();
            }
            sb.Append(";" + Environment.NewLine + Environment.NewLine);

            using (StreamWriter w = new StreamWriter("debug-me.sql", true))
            {
                w.Write(sb.ToString());
            }

            using (MySqlCommand cmd = new MySqlCommand(sb.ToString()))
            {
                cmd.Connection = con;
                cmd.CommandTimeout = 999999;
                try
                {
                    cmd.ExecuteNonQueryAsync();
                }
                catch (MySqlException mse)
                {
                    MessageBox.Show("Unable to insert data into MySQL database:" + Environment.NewLine + Environment.NewLine + mse, "Potential User Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    mw.ResetButtons();
                }
            }

            con.Close();
        }
コード例 #17
0
 public override async Task<bool>deleteAsync(object table)
 {
     var habitacion = getCastHabitacion(table);
     using (MySqlConnection MidbConexion = new MySqlConnection(this.dbPath))
     {
         MidbConexion.Open();
         MySqlCommand miComando = new MySqlCommand()
         {
             Connection = MidbConexion,
             CommandText = "DELETE FROM habitacion WHERE num_habitacion=?habitacion"
         };
         miComando.Parameters.AddWithValue("?habitacion", habitacion.numero);
         await miComando.ExecuteNonQueryAsync();
         return true;
     }
 }
コード例 #18
0
        /// <param name="checkTable">Checks the datatables existence, creates if it does not exist</param>
        /// <param name="parsedValues">The sound sensor values</param>
        /// <param name="parsedInfo">The information from the sensor</param>
        /// <param name="dateTime">The datetime of data arrival</param>
        public static void storeDataExternal(byte[] parsedValues, byte[] parsedInfo, DateTime dateTime)
        {
            if (checkTable)
            {
                MySqlCommand cmd1 = new MySqlCommand("CREATE TABLE IF NOT EXISTS node" + parsedInfo[0] + " LIKE sensorTable", mySQLDB.connection);
                cmd1.ExecuteNonQuery();
                checkTable = false;
            }

            MySqlCommand cmd2 = new MySqlCommand("INSERT INTO node" + parsedInfo[0] + "(dateTime, positionX, positionY, sensOne, sensTwo, sensThr, sensFou, sensFiv, sensSix) VALUES(@dateTime, @positionX, @positionY, @sensOne, @sensTwo, @sensThr, @sensFou, @sensFiv, @sensSix)", mySQLDB.connection);
            cmd2.Parameters.AddWithValue("@dateTime", dateTime.ToString("yyyy-MM-dd HH:mm:ss"));
            cmd2.Parameters.AddWithValue("@positionX", parsedValues[0] * parsedValues[1]);
            cmd2.Parameters.AddWithValue("@positionY", parsedValues[2] * parsedValues[3]);
            cmd2.Parameters.AddWithValue("@sensOne", parsedValues[0]);
            cmd2.Parameters.AddWithValue("@sensTwo", parsedValues[1]);
            cmd2.Parameters.AddWithValue("@sensThr", parsedValues[2]);
            cmd2.Parameters.AddWithValue("@sensFou", parsedValues[3]);
            cmd2.Parameters.AddWithValue("@sensFiv", parsedValues[4]);
            cmd2.Parameters.AddWithValue("@sensSix", parsedValues[5]);
            cmd2.ExecuteNonQueryAsync();
        }
コード例 #19
0
        public static void storeStringExternal(int node, string input)
        {
            if (checkTable)
            {
                MySqlCommand cmd1 = new MySqlCommand("CREATE TABLE IF NOT EXISTS node" + node + " LIKE sensorTable2", mySQLDB.connection);
                cmd1.ExecuteNonQuery();
                checkTable = false;
            }

            MySqlCommand cmd2 = new MySqlCommand("INSERT INTO node" + node + "(string) VALUES(@string)", mySQLDB.connection);
            cmd2.Parameters.AddWithValue("@string", input);
            cmd2.ExecuteNonQueryAsync();
        }
コード例 #20
0
 public async Task<int> ExecuteNonQuery(MySqlCommand stmt)
 {
     int result = 0;
     if (connState == ConnectionState.Open)
     {
         try
         {
             result = await stmt.ExecuteNonQueryAsync();
         }
         catch (MySqlException e)
         {
             Logger.LOG_DATABASE.Error("Could not execute prepared statement " + stmt.ToString() + " as NonQuery. " + e.Message);
         }
     }
     return result;
 }
コード例 #21
0
        public async Task ClearStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
        {
            var con = await GetFreeConnection();
            var table = GetTableName(grainState);
            var key = GetKey(grainReference);

            string query;

            if (CustomTable)
                query = string.Format("delete from `{0}` where `guid` = \"{1}\";", table, MySqlHelper.EscapeString(key));
            else
                query = string.Format("delete from `{0}` where `guid` = \"{1}\" AND `type` = \"{2}\";", table,
                    MySqlHelper.EscapeString(key), MySqlHelper.EscapeString(grainType));

            MySqlCommand com = new MySqlCommand(query, con);
            Log.Verbose(query);
            await com.ExecuteNonQueryAsync();
            com.Dispose();
            await AddFreeConnection(con);
        }
コード例 #22
0
ファイル: db.cs プロジェクト: mattmarillac/pear-app-store
 public async void create_account(string email, string password, DateTime dob, char gender, string phone, string name, int dev)
 {       //-> insert user account into database
     int retryCount = 3;
     bool success = false;
     MySqlCommand cmd = new MySqlCommand();
     while (retryCount > 0 && !success)
     {
         try
         {
             conn.Open();
             
             
             cmd.Connection = conn;
             cmd.CommandText = "START TRANSACTION; ";
             cmd.CommandText += "INSERT INTO users(user_name, password, name, dob, gender, phone, dev_id)" +
                 "VALUES(@user_name, @password, @name, @dob, @gender, @phone, @dev_id);";
             cmd.CommandText += "COMMIT; ";
             cmd.Prepare();
             //-> add parameters of this function to insert statement
             cmd.Parameters.AddWithValue("@user_name", email);
             cmd.Parameters.AddWithValue("@password", md5_encrypt(password));
             cmd.Parameters.AddWithValue("@name", name);
             cmd.Parameters.AddWithValue("@dob", dob);
             cmd.Parameters.AddWithValue("@gender", gender);
             cmd.Parameters.AddWithValue("@phone", phone);
             cmd.Parameters.AddWithValue("@dev_id", dev);
             
             await cmd.ExecuteNonQueryAsync();
             success = true;
         }
         catch (MySqlException ex)
         {       //-> error handline
             rollback(cmd);
             if (ex.Number != 1205)
             {
                 // a sql exception that is not a deadlock 
                 throw;
             }
             // Add delay here if you wish. 
             Thread.Sleep(500);
             retryCount--;
             if (retryCount == 0) throw;
         }
         finally
         {
             if (conn != null)
                 conn.Close();
         }
     }
 }
コード例 #23
0
        public async Task<bool>updateAsync(int num_habitacion,bool estado)
        {
            using (MySqlConnection MidbConexion = new MySqlConnection(this.dbPath))
            {
                MidbConexion.Open();
                MySqlCommand miComando = new MySqlCommand()
                {
                    Connection = MidbConexion,
                    CommandText = "UPDATE habitacion SET estado=?estado WHERE num_habitacion=?habitacion"
                };
                miComando.Parameters.AddWithValue("?estado", estado == true ? "Ocupado" : "Disponible");
                miComando.Parameters.AddWithValue("?habitacion", num_habitacion);
                await miComando.ExecuteNonQueryAsync();
                return true;

            }
        }
コード例 #24
0
        private async void PasswordChange(string newPW)
        {
            string agentid = Convert.ToString(ICResponse.Properties.Settings.Default.AgentID);
            string prequerystring = "UPDATE agents SET password='******' WHERE agentID='" + agentid + "'";

            using (MySqlConnection dbConn = new MySqlConnection("Server=" + ICResponse.Properties.Settings.Default.DBServer +
                                                        ";Database=" + ICResponse.Properties.Settings.Default.DBName +
                                                        ";Uid=" + ICResponse.Properties.Settings.Default.DBUser +
                                                        ";Pwd=" + ICResponse.Properties.Settings.Default.DBPass + ";"))
            {
                dbConn.Open();
                using (MySqlCommand cmd = new MySqlCommand(prequerystring, dbConn))
                {
                    await cmd.ExecuteNonQueryAsync();
                }
                dbConn.Close();
            }

        }
コード例 #25
0
        public async Task WriteStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
        {
            var con = await GetFreeConnection();
            var table = GetTableName(grainState);
            var key = GetKey(grainReference);

            var data = Newtonsoft.Json.JsonConvert.SerializeObject(grainState, Newtonsoft.Json.Formatting.Indented);

            List<string> queries = new List<string>();
            if (CustomTable)
            {
                queries.Add(string.Format("replace into `{0}` (`guid`, `data`) VALUE (\"{1}\", \"{2}\");", table, key,
                    MySqlHelper.EscapeString(data)));
            }
            else
            {
                queries.Add(string.Format("delete from `{0}` where `guid` =\"{1}\" and `type` = \"{2}\";", table, key,
                    MySqlHelper.EscapeString(grainType)));
                queries.Add(
                    string.Format("insert into `{0}` (`guid`, `type`, `data`) VALUE (\"{1}\", \"{2}\", \"{3}\");", table,
                        key, MySqlHelper.EscapeString(grainType), MySqlHelper.EscapeString(data)));
            }

            foreach (var q in queries)
            {
                MySqlCommand com = new MySqlCommand(q, con);
                Log.Verbose(q);
                await com.ExecuteNonQueryAsync();
                com.Dispose();
            }

            await AddFreeConnection(con);
        }
コード例 #26
0
        public void Suggest(String filename, String mcversion, String modversion, String md5, String modid, String modname, String author = "")
        {
            try
            {
                if (!IsModSuggested(md5))
                {
                    const string sql =
                        "INSERT INTO solderhelper.new(filename, mcversion, modversion, md5, modid, modname, author) VALUES(@filename, @mcversion, @modversion, @md5, @modid, @modname, @author);";
                    using (MySqlConnection connection = new MySqlConnection(_connectionStringSuggest))
                    {
                        connection.OpenAsync();
                        using (MySqlCommand command = new MySqlCommand(sql, connection))
                        {
                            command.Parameters.AddWithValue("@filename", filename);
                            command.Parameters.AddWithValue("@mcversion", mcversion);
                            command.Parameters.AddWithValue("@modversion", modversion);
                            command.Parameters.AddWithValue("@md5", md5);
                            command.Parameters.AddWithValue("@modid", modid);
                            command.Parameters.AddWithValue("@modname", modname);
                            command.Parameters.AddWithValue("@author", author);
                            command.ExecuteNonQueryAsync();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                Debug.WriteLine(e.StackTrace);
                if (e.InnerException != null)
                {
                    Debug.WriteLine(e.InnerException.Message);
                    Debug.WriteLine(e.InnerException.StackTrace);

                }
            }
        }
コード例 #27
0
ファイル: db_dev.cs プロジェクト: mattmarillac/pear-app-store
 public async void update_software_tuple(int index, int dev_id, string tuple, string value)
 {
     int retryCount = 3;
     bool success = false;
     MySqlCommand cmd = new MySqlCommand();
     while (retryCount > 0 && !success)
     {
         try
         {
             // your sql here
             success = true;
             conn.Open();
             //->insert relevant data
             
             cmd.Connection = conn;
             cmd.CommandText = "START TRANSACTION; "; 
             cmd.CommandText += "Update software SET "+tuple+" = @value "+
                 "WHERE software_id = @index and dev_id = @dev_id;";
             cmd.CommandText += "COMMIT; ";
             cmd.Prepare();
             //->add parameters to query
             cmd.Parameters.AddWithValue("@dev_id", dev_id);
             cmd.Parameters.AddWithValue("@index", index);
             cmd.Parameters.AddWithValue("@value", value);
             await cmd.ExecuteNonQueryAsync();
             if (conn != null)
                 conn.Close();
         }
         catch (MySqlException ex)
         {
             rollback(cmd);
             if (ex.Number != 1205)
             {
                 // a sql exception that is not a deadlock 
                 throw;
             }
             // Add delay here if you wish. 
             Thread.Sleep(500);
             retryCount--;
             if (retryCount == 0) throw;
         }
     }
 }
コード例 #28
0
ファイル: MySqlBulkLoader.cs プロジェクト: zhabis/nfx
        private async Task <int> LoadAsync(IOBehavior ioBehavior, CancellationToken cancellationToken)
        {
            if (Connection == null)
            {
                throw new InvalidOperationException("Connection not set");
            }

            if (!string.IsNullOrWhiteSpace(FileName) && SourceStream != null)
            {
                throw new InvalidOperationException("Cannot set both FileName and SourceStream");
            }

            // LOCAL INFILE case
            if (!string.IsNullOrWhiteSpace(FileName) && Local)
            {
                SourceStream = CreateFileStream(FileName);
                FileName     = null;
            }

            if (string.IsNullOrWhiteSpace(FileName) && SourceStream != null)
            {
                if (!Local)
                {
                    throw new InvalidOperationException("Cannot use SourceStream when Local is not true.");
                }

                FileName = GenerateSourceStreamName();
                lock (s_lock)
                    s_streams.Add(FileName, SourceStream);
            }

            if (string.IsNullOrWhiteSpace(FileName) || string.IsNullOrWhiteSpace(TableName))
            {
                // This is intentionally a different exception to what is thrown by MySql.Data because
                // it does not handle null or empty FileName and TableName.
                // The baseline client simply tries to use the given values, resulting in a NullReferenceException for
                // a null FileName, a MySqlException with an inner FileStream exception for an empty FileName,
                // and a MySqlException with a syntax error if the TableName is null or empty.
                throw new InvalidOperationException("FileName or SourceStream, and TableName are required.");
            }

            bool closeConnection = false;

            if (Connection.State != ConnectionState.Open)
            {
                closeConnection = true;
                Connection.Open();
            }

            try
            {
                var commandString = BuildSqlCommand();
                var cmd           = new MySqlCommand(commandString, Connection, Connection.CurrentTransaction)
                {
                    CommandTimeout = Timeout,
                };
                return(await cmd.ExecuteNonQueryAsync(ioBehavior, cancellationToken).ConfigureAwait(false));
            }
            finally
            {
                if (closeConnection)
                {
                    Connection.Close();
                }
            }
        }
コード例 #29
0
ファイル: db.cs プロジェクト: mattmarillac/pear-app-store
        public bool set_user_account_details(int uid, string email, string password, string name, DateTime dob, string phone)
        {       //-> update user account details
             int retryCount = 3;
            bool success = false;
            MySqlCommand cmd = new MySqlCommand();
            while (retryCount > 0 && !success)
            {
                try
                {
                    if (login(email.ToString(), password.ToString()))
                    {       //-> check login
                        cmd.Connection = conn;
                        cmd.CommandText = "START TRANSACTION; ";
                        cmd.CommandText += "UPDATE users SET user_name = @user_name, password = @password," +
                            "name = @name, dob = @dob, phone= @phone WHERE user_id = " + uid + ";";
                        cmd.CommandText += "COMMIT; ";
                        conn.Open();
                        cmd.Prepare();
                        //->add parameters to query
                        cmd.Parameters.AddWithValue("@user_name", email);
                        cmd.Parameters.AddWithValue("@password", md5_encrypt(password.ToString()));
                        cmd.Parameters.AddWithValue("@name", name);       //-> Paypal, direct deposit, etc.
                        cmd.Parameters.AddWithValue("@dob", dob);       //->Datetime now in current timezone
                        cmd.Parameters.AddWithValue("@phone", phone);       //-> we are not actually using a bank, so its always a valid payment
                        cmd.ExecuteNonQueryAsync();

                        success = true;
                        if (conn != null)
                            conn.Close();

                        return true;
                    }
                }
                catch (MySqlException ex)
                {
                    rollback(cmd);
                    if (ex.Number != 1205)
                    {
                        if (ex.Number != 1205)
                        {
                            // a sql exception that is not a deadlock 
                            return false;
                        }
                        // Add delay here if you wish.
                        Thread.Sleep(500);
                        retryCount--;
                        if (retryCount == 0) throw;

                    }
                    else
                    {
                        return false;
                    }
                }
            }
             return false;
            }
コード例 #30
0
ファイル: db.cs プロジェクト: mattmarillac/pear-app-store
        public async void process_transaction(int sid, int uid, string p_method)
        {       //->record users transaction details upon app purchase
            int retryCount = 3;
            bool success = false;
            MySqlCommand cmd = new MySqlCommand();
            while (retryCount > 0 && !success)
            {
                try
                {
                    // your sql here
                    success = true;
                    conn.Open();

                    //->insert relevant data
                    cmd.Connection = conn;
                    cmd.CommandText = "START TRANSACTION; ";
                    cmd.CommandText += "INSERT INTO transaction(sid, uid, payment_method, date, confirmed)" +
                        "VALUES(@sid, @uid, @payment_method, @date, @confirmed);";
                    
                    cmd.Prepare();
                    //->add parameters to query
                    cmd.Parameters.AddWithValue("@sid", sid);
                    cmd.Parameters.AddWithValue("@uid", uid);
                    cmd.Parameters.AddWithValue("@payment_method", p_method);       //-> Paypal, direct deposit, etc.
                    cmd.Parameters.AddWithValue("@date", DateTime.UtcNow.ToString());       //->Datetime now in current timezone
                    cmd.Parameters.AddWithValue("@confirmed", 1);       //-> we are not actually using a bank, so its always a valid payment
                    await cmd.ExecuteNonQueryAsync();

                    

                        string stm = "SELECT payment_method from transaction where trans_id = last_insert_id();";
                        stm += "COMMIT;";
                        cmd = new MySqlCommand(stm, conn);
                        MySqlDataReader rdr = cmd.ExecuteReader();
                        rdr.Read();
                        if (rdr.GetString(0) == "error")
                            Console.WriteLine("trigger activated upon bad value");
                        else
                            Console.WriteLine("succesful commit, trigger not activated");
                     
                    Console.WriteLine("rolling back test");
                        rollback(cmd);
                        

                    if (conn != null)
                        conn.Close();
                }
                catch (MySqlException ex) 
                {
                    rollback(cmd);
                    if (ex.Number != 1205)
                    {
                        // a sql exception that is not a deadlock 
                        Console.WriteLine("generic error");
                        throw;
                    }
                    // Add delay here if you wish. 
                    Console.WriteLine("deadlock detected");
                    Thread.Sleep(500);
                    retryCount--;
                    if (retryCount == 0) throw;
                }
            }
        }
コード例 #31
0
ファイル: BbsGetter.cs プロジェクト: ryu-s/NiconamaBbsGetter
        public async Task SaveToMysql(MySqlConnection conn, Res res)
        {
            if (await ExistsOnMysql(conn, res))
                return;
            byte[] image = null;
            if (res.Oekaki != null)
            {
                var imagePath = cacheDir + ryu_s.MyCommon.Tool.SanitizeForFilename(res.Oekaki);
                using (var fs = new FileStream(imagePath, FileMode.Open, FileAccess.Read))
                {
                    using (var br = new BinaryReader(fs))
                    {
                        image = br.ReadBytes((int)fs.Length);
                    }
                }
            }
            var query = $"INSERT INTO {communityId} ({col_resnum},{col_name},{col_trip},{col_id},{col_date},{col_body},{col_oekaki_url},{col_oekaki_image})"
                + $"values(@{col_resnum},@{col_name},@{col_trip},@{col_id},@{col_date},@{col_body},@{col_oekaki_url},@{col_oekaki_image})";
            var cmd = new MySqlCommand(query, conn);
            cmd.Parameters.Add($"@{col_resnum}", resnum_type);
            cmd.Parameters.Add($"@{col_name}", name_type, name_size);
            cmd.Parameters.Add($"@{col_trip}", trip_type, trip_size);
            cmd.Parameters.Add($"@{col_id}", id_type, id_size);
            cmd.Parameters.Add($"@{col_date}", date_type);
            cmd.Parameters.Add($"@{col_body}", body_type);
            cmd.Parameters.Add($"@{col_oekaki_url}", oekaki_url_type, oekaki_url_size);
            cmd.Parameters.Add($"@{col_oekaki_image}", oekaki_image_type);

            cmd.Parameters[$"@{col_resnum}"].Value = res.Resnum;
            cmd.Parameters[$"@{col_name}"].Value = (res.Name != null) ? MySqlHelper.EscapeString(res.Name) : res.Name;
            cmd.Parameters[$"@{col_trip}"].Value = res.Trip;
            cmd.Parameters[$"@{col_id}"].Value = res.Id;
            cmd.Parameters[$"@{col_date}"].Value = res.Date;
            cmd.Parameters[$"@{col_body}"].Value = (res.Body != null) ? MySqlHelper.EscapeString(res.Body) : res.Body;
            cmd.Parameters[$"@{col_oekaki_url}"].Value = res.Oekaki;
            cmd.Parameters[$"@{col_oekaki_image}"].Value = image;

            try
            {
                var rowsAffected = await cmd.ExecuteNonQueryAsync();
            }
            catch (MySqlException ex)
            {
                ryu_s.MyCommon.Logging.LogException(ryu_s.MyCommon.LogLevel.error, ex);
            }
            return;
        }