void CreateIndex(ISagaData sagaData, OracleDbConnection connection, IEnumerable <KeyValuePair <string, string> > propertiesToIndex) { var sagaTypeName = GetSagaTypeName(sagaData.GetType()); var parameters = propertiesToIndex .Select((p, i) => new { SagaType = sagaTypeName, SagaId = sagaData.Id.ToByteArray(), PropertyName = p.Key, PropertyValue = p.Value ?? "", }) .ToList(); // lastly, generate new index using (var command = connection.CreateCommand()) { // generate batch insert with SQL for each entry in the index command.CommandText = $@"INSERT INTO {_indexTable} (saga_type, key, value, saga_id) VALUES (:saga_type, :key, :value, :saga_id)"; command.BindByName = true; command.ArrayBindCount = parameters.Count; command.Parameters.Add(new OracleParameter("saga_type", OracleDbType.NVarchar2, parameters.Select(x => x.SagaType).ToArray(), ParameterDirection.Input)); command.Parameters.Add(new OracleParameter("key", OracleDbType.NVarchar2, parameters.Select(x => x.PropertyName).ToArray(), ParameterDirection.Input)); command.Parameters.Add(new OracleParameter("value", OracleDbType.NVarchar2, parameters.Select(x => x.PropertyValue).ToArray(), ParameterDirection.Input)); command.Parameters.Add(new OracleParameter("saga_id", OracleDbType.Raw, parameters.Select(x => x.SagaId).ToArray(), ParameterDirection.Input)); command.ExecuteNonQuery(); } }
public ActionResult <string> Data([FromBody] string data) { bool res; using (var con = new OracleDbConnection()) { res = con.isConnection(); } return(res ? "1" : "0"); }
void UpdateLastReadTime(string id, OracleDbConnection connection) { using (var command = connection.CreateCommand()) { command.CommandText = $"UPDATE {_table} SET lastReadTime = :now WHERE id = :id"; command.BindByName = true; command.Parameters.Add("now", _rebusTime.Now.ToOracleTimeStamp()); command.Parameters.Add("id", id); command.ExecuteNonQuery(); } }
static void ExecuteCommands(OracleDbConnection connection, string sqlCommands) { foreach (var sqlCommand in sqlCommands.Split(new[] { "----" }, StringSplitOptions.RemoveEmptyEntries)) { using (var command = connection.CreateCommand()) { command.CommandText = sqlCommand; Execute(command); } } }
/// <summary> /// Opens the data stored under the given ID for reading /// </summary> public Task <Stream> Read(string id) { try { // update last read time quickly UpdateLastReadTime(id); OracleDbConnection connection = null; OracleCommand command = null; OracleDataReader reader = null; try { connection = _connectionHelper.GetConnection(); command = connection.CreateCommand(); command.CommandText = $"SELECT data FROM {_table} WHERE id = :id"; command.Parameters.Add("id", id); command.InitialLOBFetchSize = 4000; reader = command.ExecuteReader(CommandBehavior.SingleRow); if (!reader.Read()) { throw new ArgumentException($"DataBus row with ID {id} not found"); } var blob = reader.GetOracleBlob(0); return(Task.FromResult <Stream>(new StreamWrapper(blob, /* dispose with stream: */ reader, command, connection))); } catch { // if something of the above fails, we did not pass ownership to someone who can dispose it... therefore: reader?.Dispose(); command?.Dispose(); connection?.Dispose(); throw; } } catch (Exception exception) { // Wrap in AggregateException to comply with Rebus contract. Tests do look for this specific exception type. throw new AggregateException(exception); } }
public OracleApplicationRepository(OracleDbConnection dbConnection) { _dbConnection = dbConnection; }
public OracleUnitOfWork(string connectionString) { _dbConnection = new OracleDbConnection(connectionString); }
public ConnectionWrapper(OracleDbConnection connection) { Connection = connection; Semaphore = new SemaphoreSlim(1, 1); }
/// <summary> /// 使用链接类初始化oracle的链接 /// </summary> /// <param name="Connection"></param> public OracleDbHelper(OracleDbConnection Connection) : base(Connection) { }