コード例 #1
0
ファイル: BatchWriter.cs プロジェクト: bytemaster-0xff/Data
        public void Init(Table table, DbConnection connection, bool truncate = false, bool dropTable = false)
        {
            _table      = table;
            _connection = connection;
            _command    = connection.CreateCommand();

            connection.Open();

            if (dropTable)
            {
                var dropTableCommand = _connection.CreateCommand();
                dropTableCommand.CommandText = $"drop table if exists [{_table.Name}]";
                dropTableCommand.ExecuteNonQuery();
            }

            var bldr = new SqliteScriptBuilder();
            var cmd  = connection.CreateCommand();

            cmd.CommandText = bldr.BuildCreateScript(table);
            cmd.ExecuteNonQuery();

            var paramFactory = new SqliteParameterFactory();

            var fields = String.Empty;
            var values = String.Empty;

            foreach (var param in table.Columns)
            {
                var paramName = $"@{param.Name}";

                fields += String.IsNullOrEmpty(fields) ? $"{param.Name}" : $", {param.Name}";
                values += String.IsNullOrEmpty(values) ? $"{paramName}" : $", {paramName}";

                _command.Parameters.Add(new SqliteParameter($"{paramName}", null));
            }

            if (truncate)
            {
                var truncateCommand = _connection.CreateCommand();
                truncateCommand.CommandText = $"delete from [{_table.Name}]";
                truncateCommand.ExecuteNonQuery();

                _command.CommandText = $"insert into [{table.Name}] ({fields}) values ({values})";
            }
            else
            {
                _command.CommandText = $"insert or replace into [{table.Name}] ({fields}) values ({values})";
            }

            _connection.Close();
        }
コード例 #2
0
 public SqliteOrmDataComponentFactory(string connectionString) : base(connectionString)
 {
     SchemaParameterNames = new SqliteSchemaParameterNames();
     ScriptBuilder        = new SqliteScriptBuilder();
     SqlStatementBuilder  = new SqliteStatementBuilder(this);
 }
コード例 #3
0
 public SqliteOrmDataComponentFactory(RetryOptions retryOptions) : base(retryOptions)
 {
     SchemaParameterNames = new SqliteSchemaParameterNames();
     ScriptBuilder        = new SqliteScriptBuilder();
     SqlStatementBuilder  = new SqliteStatementBuilder(this);
 }
コード例 #4
0
 public SqliteOrmDataComponentFactory(SqliteTransientRetryPolicy retryPolicy, string connectionString) : base(retryPolicy, connectionString)
 {
     SchemaParameterNames = new SqliteSchemaParameterNames();
     ScriptBuilder        = new SqliteScriptBuilder();
     SqlStatementBuilder  = new SqliteStatementBuilder(this);
 }