Esempio n. 1
0
        private void PrcsException(string library, string select, Exception ex, string[] _nParametros, object[] _vParametros)
        {
            DataTable dtTmp = new DataTable();

            dtTmp.Columns.Add("Error", typeof(string));
            dtTmp.Rows.Add(ex.Message);
            logException(SelectCommand.GetCommand(library, select, _nParametros, _vParametros), dtTmp);
        }
        private void sendCommand(string value)
        {
            SelectCommand sc  = new SelectCommand("master_node_id", this.txtEquipmentID.Text, this.txtEPC.Text, "0", value);
            string        cmd = sc.GetCommand();

            byte[] byteData = Encoding.UTF8.GetBytes(cmd);
            clientSocket.BeginSendTo(byteData, 0, byteData.Length, SocketFlags.None, epServer, null, null);
        }
Esempio n. 3
0
        private void PrcsException(string select, Exception ex)
        {
            DataTable dtTmp = new DataTable();

            dtTmp.Columns.Add("Error", typeof(string));
            dtTmp.Rows.Add(ex.Message);
            logException(SelectCommand.GetCommand(select), dtTmp);
        }
Esempio n. 4
0
        private int ExecuteCommand(string library, string select, string[] _nParametros, object[] _vParametros)
        {
            int recordProcessed = int.MinValue;

            using (OracleConnection conn = new OracleConnection(_Security.cadena))
            {
#pragma warning disable CA2100 // Review SQL queries for security vulnerabilities
                OracleCommand cmd = new OracleCommand(SelectCommand.GetCommand(library, select, _nParametros, _vParametros), conn)
                {
                    CommandType = CommandType.Text
                };
#pragma warning restore CA2100 // Review SQL queries for security vulnerabilities
                for (int i = 0; i < _nParametros.Length; i++)
                {
                    cmd.Parameters.Add(parametroInt(_nParametros[i], _vParametros[i]));
                }
                try
                {
                    conn.Open();
                    recordProcessed = (int)cmd.ExecuteNonQuery();
                }
                catch (OracleException ex)
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                    PrcsOracleException(SelectCommand.GetCommand(library, select, _nParametros, _vParametros), ex);
                }
                catch (Exception ex)
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                    PrcsException(library, SelectCommand.GetCommand(library, select, _nParametros, _vParametros), ex, _nParametros, _vParametros);
                }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                }
            }
            return(recordProcessed);
        }
Esempio n. 5
0
        private DataTable GetTableReader(string library, string select, string[] _nParametros, object[] _vParametros)
        {
            DataTable dtTmp = new DataTable();

            using (OracleConnection conn = new OracleConnection(_Security.cadena))
            {
#pragma warning disable CA2100 // Review SQL queries for security vulnerabilities
                OracleCommand cmd = new OracleCommand(SelectCommand.GetCommand(library, select, _nParametros, _vParametros), conn);
#pragma warning restore CA2100 // Review SQL queries for security vulnerabilities
                switch (select)
                {
                case "FDB_LEER_ANEXOS_DIAN":
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    break;
                }

                default:
                {
                    cmd.CommandType = CommandType.Text;
                    break;
                }
                }

                //Debido a que el stored procedure recibe un parámetro de salida creamos un objeto de tipo OracleParameter y lo definimos que será de salida y de tipo RefCursor.

                OracleParameter p_refcursor = new OracleParameter();
                p_refcursor.OracleDbType = OracleDbType.RefCursor;
                p_refcursor.Direction    = ParameterDirection.ReturnValue;
                cmd.Parameters.Add(p_refcursor);


                for (int i = 0; i < _nParametros.Length; i++)
                {
                    cmd.Parameters.Add(parametroInt(_nParametros[i], _vParametros[i]));
                }

                try
                {
                    cmd.ExecuteNonQuery();//El método executeNonQuery ejecuta el stored procedure y éste nos devolverá el cursor ya abierto el cual tiene identificado el conjunto de filas a recuperar.

                    OracleRefCursor cursor = (OracleRefCursor)p_refcursor.Value;

                    OracleDataReader dr = cursor.GetDataReader();//Se crea el objeto DataReader mediante el valor obtenido por el cursor (OracleParameter) para recorrer la información y cargarla a nuestro arreglo.


                    /*  En muchas situaciones es recomendable aumentar el tamaño en ventaja de recoger la información más rápido siendo más eficientes. Esto se realiza con la siguiente línea de código:
                     *  dr.FetchSize = cmd.RowSize * 100;
                     *  En este caso esperamos recibir la información en bloques de 100 filas, por lo cual si una tabla tiene 1000 filas se harán 10 viajes de la capa de base de datos a la capa cliente para obtener la información completa de la tabla.
                     *  La vista V$SQL tiene los campos: executions, fetches y rows_processed los cuales nos pueden ayudar a definir la cantidad de filas hacer retornadas en un fetch de manera eficiente.
                     *  Por ejemplo: Si obtenemos el ratio de rows_processed/executions nos daría la cantidad de filas promedio obtenidas en una ejecución del query.
                     *  El ratio de fetches/executions nos entrega la cantidad de fetchs en cada ejecución.
                     *  Obteniendo ambos ratios tenemos la cantidad de filas y fetchs de cada ejecución del query los cuales podrían ser reducidos ampliando la cantidad de filas a traer en cada operación de fetch.
                     */

                    FieldInfo fi = dr.GetType().GetField("m_rowSize", BindingFlags.Instance | BindingFlags.NonPublic);
                    fi = dr.GetType().GetField("m_rowSize", BindingFlags.Instance);

                    //Existe un bug con el atributo RowSize del objeto Command ya que devuelve siempre el valor de 0. Para evitar el bug y conseguir el tamaño en bytes de una fila se ha implementado las siguientes líneas de código.
                    int rowsize = 0;
                    try
                    {
                        //int rowsize = Convert.ToInt32(fi.GetValue(dr));
                        rowsize = dr.FieldCount * 100;
                    }
                    catch (Exception ex)
                    {
                        rowsize = 1515;
                    }

                    //Un fetch es un conjunto de filas que recoge la capa de aplicación de la base de datos mientras recorre un cursor. Por default este valor es 64 KB, es decir en bloques de 64 KB se va obteniendo todas las filas de un cursor.
                    dr.FetchSize = rowsize * 100;
                    while (dr.Read())
                    {
                        /*EConsulta objConsulta = new EConsulta();
                         * objConsulta.ORCA_NUMERO_NB = double.Parse(dr["ORCA_NUMERO_NB"].ToString());*/
                    }
                    p_refcursor.Dispose();
                    cmd.Dispose();
                }
                catch (OracleException ex)
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                    PrcsOracleException(SelectCommand.GetCommand(library, select, _nParametros, _vParametros), ex);
                }
                catch (Exception ex)
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                    PrcsException(library, SelectCommand.GetCommand(library, select, _nParametros, _vParametros), ex, _nParametros, _vParametros);
                }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                }
            }
            return(dtTmp);
        }
Esempio n. 6
0
        private DataTable GetTable(string library, string select, string[] _nParametros, object[] _vParametros)
        {
            DataTable dtTmp = new DataTable();

            using (OracleConnection conn = new OracleConnection(_Security.cadena))
            {
#pragma warning disable CA2100 // Review SQL queries for security vulnerabilities
                OracleCommand cmd = new OracleCommand(SelectCommand.GetCommand(library, select, _nParametros, _vParametros), conn);
#pragma warning restore CA2100 // Review SQL queries for security vulnerabilities
                switch (select)
                {
                case "FDB_LEER_ANEXOS_DIAN":
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    break;
                }

                default:
                {
                    cmd.CommandType = CommandType.Text;
                    break;
                }
                }
                OracleParameter p_refcursor = new OracleParameter();
                p_refcursor.OracleDbType = OracleDbType.RefCursor;
                p_refcursor.Direction    = ParameterDirection.ReturnValue;
                cmd.Parameters.Add(p_refcursor);


                for (int i = 0; i < _nParametros.Length; i++)
                {
                    cmd.Parameters.Add(parametroInt(_nParametros[i], _vParametros[i]));
                }

                OracleDataAdapter adapter = new OracleDataAdapter(cmd);
                try
                {
                    adapter.Fill(dtTmp);
                }
                catch (OracleException ex)
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                    PrcsOracleException(SelectCommand.GetCommand(library, select, _nParametros, _vParametros), ex);
                }
                catch (Exception ex)
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                    PrcsException(library, SelectCommand.GetCommand(library, select, _nParametros, _vParametros), ex, _nParametros, _vParametros);
                }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                }
            }
            return(dtTmp);
        }