Пример #1
0
        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 OdbcOracleConnectionPool)?.UserId;
                if (string.IsNullOrEmpty(userId))
                {
                    using (var conn = _orm.Ado.MasterPool.Get())
                    {
                        userId = OdbcOracleConnectionPool.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");
        }
Пример #2
0
        public OdbcOracleConnectionPool(string name, string connectionString, Action availableHandler, Action unavailableHandler) : base(null)
        {
            this.UserId = OdbcOracleConnectionPool.GetUserId(connectionString);

            this.availableHandler   = availableHandler;
            this.unavailableHandler = unavailableHandler;
            var policy = new OdbcOracleConnectionPoolPolicy
            {
                _pool = this,
                Name  = name
            };

            this.Policy             = policy;
            policy.ConnectionString = connectionString;
        }
Пример #3
0
 public OdbcOracleAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings) : base(DataType.Oracle)
 {
     base._util = util;
     if (!string.IsNullOrEmpty(masterConnectionString))
     {
         MasterPool = new OdbcOracleConnectionPool("主库", masterConnectionString, null, null);
     }
     if (slaveConnectionStrings != null)
     {
         foreach (var slaveConnectionString in slaveConnectionStrings)
         {
             var slavePool = new OdbcOracleConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
             SlavePools.Add(slavePool);
         }
     }
 }
Пример #4
0
 public OdbcOracleAdo(CommonUtils util, string masterConnectionString, string[] slaveConnectionStrings, Func<DbConnection> connectionFactory) : base(DataType.OdbcOracle)
 {
     base._util = util;
     if (connectionFactory != null)
     {
         MasterPool = new FreeSql.Internal.CommonProvider.DbConnectionPool(DataType.OdbcOracle, connectionFactory);
         return;
     }
     if (!string.IsNullOrEmpty(masterConnectionString))
         MasterPool = new OdbcOracleConnectionPool("主库", masterConnectionString, null, null);
     if (slaveConnectionStrings != null)
     {
         foreach (var slaveConnectionString in slaveConnectionStrings)
         {
             var slavePool = new OdbcOracleConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
             SlavePools.Add(slavePool);
         }
     }
 }