public object ExecuteScalar(string sql)
        {
            IDbCommand command = _database.GetCommand();

            command.CommandText = sql;
            return(ExecuteScalar(command));
        }
예제 #2
0
        public void CreateChunkTable()
        {
            DropChunkTable();
            var query = File.ReadAllText(Path.Combine(_folder, "CreateChunkTable.sql"));

            query = query.Replace("{sc}", _schemaName);

            using (var connection = _dbEngine.GetConnection(_connectionString))
                using (var cmd = _dbEngine.GetCommand(query, connection))
                {
                    cmd.ExecuteNonQuery();
                }
        }
        public void CreateDatabase(string query)
        {
            var sqlConnectionStringBuilder = new OdbcConnectionStringBuilder(_connectionString);
            var database = sqlConnectionStringBuilder["database"];

            // TMP
            var mySql = _connectionString.ToLower().Contains("mysql");

            if (_connectionString.ToLower().Contains("mysql"))
            {
                sqlConnectionStringBuilder["database"] = "mysql";
            }
            else if (_connectionString.ToLower().Contains("postgres"))
            {
                sqlConnectionStringBuilder["database"] = "postgres";
            }
            else if (_connectionString.ToLower().Contains("amazon redshift"))
            {
                sqlConnectionStringBuilder["database"] = "poc";
            }
            else
            {
                sqlConnectionStringBuilder["database"] = "master";
            }

            //using (var connection = SqlConnectionHelper.OpenOdbcConnection(sqlConnectionStringBuilder.ConnectionString))
            using (var connection = _engine.GetConnection(sqlConnectionStringBuilder.ConnectionString))
            {
                query = string.Format(query, database);

                foreach (var subQuery in query.Split(new[] { "\r\nGO", "\nGO" }, StringSplitOptions.None))
                {
                    //using (var command = new OdbcCommand(subQuery, connection))
                    using (var command = _engine.GetCommand(subQuery, connection))
                    {
                        command.CommandTimeout = 30000;
                        command.ExecuteNonQuery();
                    }
                }
            }
        }
        public ParameterizedCommandBuilder(IDatabaseEngine engine, string commandTemplate)
        {
            _engine = engine;
            _commandTemplate = commandTemplate;
            _parameters = new ParameterCollection();

            var parser = new TemplateParser(_commandTemplate);
            _parameterNames = parser.Parse();

            _commandTextBuilder = new StringBuilder(_commandTemplate);
            _command = _engine.GetCommand();
        }
        public override void Initialize(IDatabaseEngine engine)
        {
            var parameters = new ParameterCollection();
            foreach (string substitution in _substitutions)
            {
                var parameter = new TemplateParameter(substitution);
                parameters.AddParameter(parameter);
            }

            IDbCommand command = engine.GetCommand();
            initializeMembers(parameters, command);
        }
        public ParameterizedCommandBuilder(IDatabaseEngine engine, string commandTemplate)
        {
            _engine          = engine;
            _commandTemplate = commandTemplate;
            _parameters      = new ParameterCollection();

            var parser = new TemplateParser(_commandTemplate);

            _parameterNames = parser.Parse();

            _commandTextBuilder = new StringBuilder(_commandTemplate);
            _command            = _engine.GetCommand();
        }
예제 #7
0
        public override void Initialize(IDatabaseEngine engine)
        {
            var parameters = new ParameterCollection();

            foreach (string substitution in _substitutions)
            {
                var parameter = new TemplateParameter(substitution);
                parameters.AddParameter(parameter);
            }

            IDbCommand command = engine.GetCommand();

            initializeMembers(parameters, command);
        }
예제 #8
0
        public override void Initialize(IDatabaseEngine engine)
        {
            var parameters = new ParameterCollection(_filters);
            IDbCommand command = engine.GetCommand();

            var parser = new TemplateParser(_selectAndFromClause);
            string[] substitutions = parser.Parse();
            foreach (string substitution in substitutions)
            {
                var parameter = new TemplateParameter(substitution);
                _templatedParameters.Add(parameter);
                parameters.AddParameter(parameter);
            }

            foreach (IQueryFilter filter in _filters)
            {
                filter.Initialize(engine, command);
            }

            initializeMembers(parameters, command);
        }
        public override void Initialize(IDatabaseEngine engine)
        {
            var        parameters = new ParameterCollection(_filters);
            IDbCommand command    = engine.GetCommand();

            var parser = new TemplateParser(_selectAndFromClause);

            string[] substitutions = parser.Parse();
            foreach (string substitution in substitutions)
            {
                var parameter = new TemplateParameter(substitution);
                _templatedParameters.Add(parameter);
                parameters.AddParameter(parameter);
            }

            foreach (IQueryFilter filter in _filters)
            {
                filter.Initialize(engine, command);
            }

            initializeMembers(parameters, command);
        }
예제 #10
0
        public KeyValuePair <string, Exception> Load(IDatabaseEngine sourceEngine, string sourceSchemaName, List <QueryDefinition> sourceQueryDefinitions, OdbcConnection sourceConnection, string vendor)
        {
            var fileName         = string.Empty;
            var query            = string.Empty;
            var connectionString = string.Empty;

            try
            {
                var timer = new Stopwatch();
                timer.Start();
                foreach (var qd in sourceQueryDefinitions)
                {
                    if (qd.Providers != null)
                    {
                        continue;
                    }
                    if (qd.Locations != null)
                    {
                        continue;
                    }
                    if (qd.CareSites != null)
                    {
                        continue;
                    }

                    fileName = qd.FileName;

                    var sql = GetSqlHelper.GetSql(sourceEngine.Database,
                                                  qd.GetSql(vendor, sourceSchemaName),
                                                  sourceSchemaName);

                    if (string.IsNullOrEmpty(sql))
                    {
                        continue;
                    }

                    var q = string.Format(sql, ChunkId);

                    using (var cdm = sourceEngine.GetCommand(q, sourceConnection))
                    {
                        cdm.CommandTimeout = 30000;
                        using (var reader =
                                   sourceEngine.ReadChunkData(sourceConnection, cdm, qd, ChunkId,
                                                              Prefix))
                        {
                            while (reader.Read())
                            {
                                PopulateData(qd, reader);
                            }
                        }
                    }
                }

                timer.Stop();
            }
            catch (Exception e)
            {
                var info = new StringBuilder();
                info.AppendLine("SourceEngine=" + sourceEngine);
                info.AppendLine("SourceConnectionString=" + connectionString);
                info.AppendLine("File name=" + fileName);
                info.AppendLine("Query:");
                info.AppendLine(query);

                return(new KeyValuePair <string, Exception>(info.ToString(), e));
            }


            return(new KeyValuePair <string, Exception>(null, null));
        }