/// <summary>
        ///		Ejecuta los comandos de una cadena SQL
        /// </summary>
        internal async Task ExecuteAsync(IDbProvider provider, string sql, Models.ArgumentListModel arguments, TimeSpan timeout, CancellationToken cancellationToken)
        {
            using (BlockLogModel block = Manager.SolutionManager.Logger.Default.CreateBlock(LogModel.LogType.Info, "Execute script"))
            {
                if (string.IsNullOrWhiteSpace(sql))
                {
                    block.Error("The query is empty");
                }
                else
                {
                    List <ScriptSqlPartModel> scripts = new ScriptSqlTokenizer().Parse(sql, arguments.Constants);
                    int scriptsExecuted = 0;

                    // Ejecuta los scripts
                    if (scripts.Count > 0)
                    {
                        scriptsExecuted = await ExecuteCommandsAsync(provider, block, scripts, ConvertParameters(arguments.Parameters), timeout, cancellationToken);
                    }
                    // Log
                    if (scriptsExecuted == 0)
                    {
                        block.Error("The query is empty");
                    }
                    else
                    {
                        block.Info($"{scriptsExecuted} command/s executed");
                    }
                }
            }
        }
Example #2
0
 /// <summary>
 ///		Ejecuta una consulta
 /// </summary>
 internal async Task <DataTable> GetDatatableQueryAsync(ConnectionModel connection, string query,
                                                        Models.ArgumentListModel arguments,
                                                        int actualPage, int pageSize, TimeSpan timeout, CancellationToken cancellationToken)
 {
     return(await Task.Run(() => new ScriptSqlController(this).GetDataTableAsync(GetDbProvider(connection),
                                                                                 query, arguments,
                                                                                 actualPage, pageSize, timeout, cancellationToken)));
 }
 /// <summary>
 ///		Obtiene un <see cref="System.Data.DataTable"/> paginada con una consulta sobre una conexión
 /// </summary>
 public async Task <System.Data.DataTable> GetDatatableQueryAsync(ConnectionModel connection, string query,
                                                                  Connections.Models.ArgumentListModel arguments,
                                                                  int actualPage, int pageSize, TimeSpan timeout, CancellationToken cancellationToken)
 {
     return(await ConnectionManager.GetDatatableQueryAsync(connection, query, arguments, actualPage, pageSize, timeout, cancellationToken));
 }
 /// <summary>
 ///		Ejecuta una consulta sobre una conexión
 /// </summary>
 public async Task ExecuteQueryAsync(ConnectionModel connection, string query,
                                     Connections.Models.ArgumentListModel arguments,
                                     TimeSpan timeout, CancellationToken cancellationToken)
 {
     await ConnectionManager.ExecuteQueryAsync(connection, query, arguments, timeout, cancellationToken);
 }
        /// <summary>
        ///		Obtiene el datatable de una consulta
        /// </summary>
        internal async Task <DataTable> GetDataTableAsync(IDbProvider provider, string query, Models.ArgumentListModel arguments,
                                                          int actualPage, int pageSize, TimeSpan timeout, CancellationToken cancellationToken)
        {
            DataTable result = null;

            // Obtiene la tabla
            using (BlockLogModel block = Manager.SolutionManager.Logger.Default.CreateBlock(LogModel.LogType.Info, "Execute query"))
            {
                if (string.IsNullOrWhiteSpace(query))
                {
                    block.Error("The query is empty");
                }
                else
                {
                    List <ScriptSqlPartModel> scripts      = new ScriptSqlTokenizer().Parse(query, arguments.Constants);
                    SparkSqlTools             sqlTools     = new SparkSqlTools();
                    ParametersDbCollection    parametersDb = ConvertParameters(arguments.Parameters);

                    // Obtiene el datatable
                    foreach (ScriptSqlPartModel script in scripts)
                    {
                        if (script.Type == ScriptSqlPartModel.PartType.Sql)
                        {
                            string sql = sqlTools.ConvertSqlNoParameters(script.Content, parametersDb, "$").TrimIgnoreNull();

                            if (!string.IsNullOrWhiteSpace(sql))
                            {
                                // Log
                                block.Info($"Executing: {sql}");
                                // Obtiene la consulta
                                if (sql.TrimIgnoreNull().StartsWith("SELECT", StringComparison.CurrentCultureIgnoreCase))
                                {
                                    if (pageSize == 0)
                                    {
                                        result = await provider.GetDataTableAsync(sql, null, CommandType.Text, timeout, cancellationToken);
                                    }
                                    else
                                    {
                                        result = await provider.GetDataTableAsync(sql, null, CommandType.Text, actualPage, pageSize, timeout, cancellationToken);
                                    }
                                }
                                else
                                {
                                    result = await ExecuteScalarQueryAsync(provider, sql, timeout, cancellationToken);
                                }
                            }
                        }
                    }
                    // Log
                    block.Info("End query");
                }
            }
            // Devuelve la última tabla obtenida
            return(result);
        }
Example #6
0
 /// <summary>
 ///		Ejecuta una consulta
 /// </summary>
 internal async Task ExecuteQueryAsync(ConnectionModel connection, string query,
                                       Models.ArgumentListModel arguments,
                                       TimeSpan timeout, CancellationToken cancellationToken)
 {
     await Task.Run(() => new ScriptSqlController(this).ExecuteAsync(GetDbProvider(connection), query, arguments, timeout, cancellationToken));
 }