public bool ExistsTable(string name, bool ignoreCase) { if (string.IsNullOrEmpty(name)) { return(false); } var tbname = _commonUtils.SplitTableName(name); if (tbname?.Length == 1) { var userId = (_orm.Ado.MasterPool as OdbcDamengConnectionPool)?.UserId; if (string.IsNullOrEmpty(userId)) { using (var conn = _orm.Ado.MasterPool.Get()) { userId = OdbcDamengConnectionPool.GetUserId(conn.Value.ConnectionString); } } tbname = new[] { userId, tbname[0] }; } if (ignoreCase) { tbname = tbname.Select(a => a.ToLower()).ToArray(); } var sql = $" select 1 from all_tab_comments where {(ignoreCase ? "lower(owner)" : "owner")}={_commonUtils.FormatSql("{0}", tbname[0])} and {(ignoreCase ? "lower(table_name)" : "table_name")}={_commonUtils.FormatSql("{0}", tbname[1])}"; return(string.Concat(_orm.Ado.ExecuteScalar(CommandType.Text, sql)) == "1"); }
public OdbcDamengConnectionPool(string name, string connectionString, Action availableHandler, Action unavailableHandler) : base(null) { this.UserId = OdbcDamengConnectionPool.GetUserId(connectionString); this.availableHandler = availableHandler; this.unavailableHandler = unavailableHandler; var policy = new OdbcOracleConnectionPoolPolicy { _pool = this, Name = name }; this.Policy = policy; policy.ConnectionString = connectionString; }
public OdbcDamengAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings) : base(DataType.Oracle) { base._util = util; if (!string.IsNullOrEmpty(masterConnectionString)) { MasterPool = new OdbcDamengConnectionPool("主库", masterConnectionString, null, null); } if (slaveConnectionStrings != null) { foreach (var slaveConnectionString in slaveConnectionStrings) { var slavePool = new OdbcDamengConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables)); SlavePools.Add(slavePool); } } }
public OdbcDamengAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func <DbConnection> connectionFactory) : base(DataType.OdbcDameng, masterConnectionString, slaveConnectionStrings) { base._util = util; if (connectionFactory != null) { MasterPool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.OdbcDameng, connectionFactory); return; } if (!string.IsNullOrEmpty(masterConnectionString)) { MasterPool = new OdbcDamengConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null); } if (slaveConnectionStrings != null) { foreach (var slaveConnectionString in slaveConnectionStrings) { var slavePool = new OdbcDamengConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables)); SlavePools.Add(slavePool); } } }