Пример #1
0
        public static DataTable ExecuteDataTable(this DbConnection connection, string sql)
        {
            using var command     = connection.CreateCommand();
            using var adapter     = new ClickHouseDataAdapter();
            command.CommandText   = sql;
            adapter.SelectCommand = command;
            var dataTable = new DataTable();

            adapter.Fill(dataTable);
            return(dataTable);
        }
        public override DbDataAdapter GetAdapter(string selectCommand, DbConnection connection, CommandParameterCollection parameters)
        {
            ClickHouseDataAdapter clickHouseDataAdapter = new ClickHouseDataAdapter();
            var command = connection.CreateCommand() as ClickHouseCommand;

            foreach (CommandParameter p in parameters)
            {
                selectCommand = selectCommand.Replace($"@{p.Name}", $"{{{p.Name}:{(ClickHouseTypeCode)p.DataType}}}");
                command.AddParameter(p.Name, ((ClickHouseTypeCode)p.DataType).ToString(), p.Value);
            }
            command.CommandText = selectCommand;
            clickHouseDataAdapter.SelectCommand = command;
            return(clickHouseDataAdapter);
        }
        public override DbDataAdapter GetAdapter(string selectCommand, DbConnection connection, CommandParameterCollection parameters)
        {
            ClickHouseDataAdapter adapter = new ClickHouseDataAdapter();

            adapter.SelectCommand             = new ClickHouseCommand(connection as ClickHouseConnection);
            adapter.SelectCommand.CommandText = selectCommand;

            foreach (CommandParameter p in parameters)
            {
                ClickHouseDbParameter parameter = new ClickHouseDbParameter();
                adapter.SelectCommand.Parameters.Add(p.Name);
                parameter.Value = p.Value;
            }
            return(adapter);
        }
Пример #4
0
        public void DataAdapterShouldFillSingleValue(string sql)
        {
            using var adapter = new ClickHouseDataAdapter();
            using var command = connection.CreateCommand();

            command.CommandText   = sql;
            adapter.SelectCommand = command;

            var dataTable = new DataTable();

            adapter.Fill(dataTable);

            Assert.AreEqual(1, dataTable.Rows.Count);
            Assert.AreEqual(1, dataTable.Columns.Count);
            Assert.AreEqual("col", dataTable.Columns[0].ColumnName);
        }
Пример #5
0
        public void DataAdapterShouldFillDataTable()
        {
            using var connection = TestUtilities.GetTestClickHouseConnection();
            using var adapter    = new ClickHouseDataAdapter();
            using var command    = connection.CreateCommand();

            command.CommandText   = "SELECT number, 'a' as string FROM system.numbers LIMIT 100";
            adapter.SelectCommand = command;

            var dataTable = new DataTable();

            adapter.Fill(dataTable);

            Assert.AreEqual(100, dataTable.Rows.Count);
            Assert.AreEqual(2, dataTable.Columns.Count);
        }
Пример #6
0
        public void DataAdapterShouldFillDataSet()
        {
            using var adapter = new ClickHouseDataAdapter();
            using var command = connection.CreateCommand();

            command.CommandText   = "SELECT number, 'a' as string FROM system.numbers LIMIT 100";
            adapter.SelectCommand = command;

            var dataSet = new DataSet();

            adapter.Fill(dataSet);

            Assert.AreEqual(1, dataSet.Tables.Count);
            Assert.AreEqual(100, dataSet.Tables[0].Rows.Count);
            Assert.AreEqual(2, dataSet.Tables[0].Columns.Count);
        }
Пример #7
0
        private static DataTable DescribeTables(DbConnection connection, string database)
        {
            var command = connection.CreateCommand();
            var query   = new StringBuilder("show tables in ");

            query.Append(database);
            command.CommandText = query.ToString();
            DataTable result = new DataTable();

            using (var adapter = new ClickHouseDataAdapter())
            {
                adapter.SelectCommand = command;
                adapter.Fill(result);
            }
            return(result);
        }