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(); }
public SqliteOrmDataComponentFactory(string connectionString) : base(connectionString) { SchemaParameterNames = new SqliteSchemaParameterNames(); ScriptBuilder = new SqliteScriptBuilder(); SqlStatementBuilder = new SqliteStatementBuilder(this); }
public SqliteOrmDataComponentFactory(RetryOptions retryOptions) : base(retryOptions) { SchemaParameterNames = new SqliteSchemaParameterNames(); ScriptBuilder = new SqliteScriptBuilder(); SqlStatementBuilder = new SqliteStatementBuilder(this); }
public SqliteOrmDataComponentFactory(SqliteTransientRetryPolicy retryPolicy, string connectionString) : base(retryPolicy, connectionString) { SchemaParameterNames = new SqliteSchemaParameterNames(); ScriptBuilder = new SqliteScriptBuilder(); SqlStatementBuilder = new SqliteStatementBuilder(this); }