Esempio n. 1
0
        private static void TryAndCloseConnection(ConnectionFactoryDesc connectionFactoryDesc)
        {
            var config = new ConfigurationDBRef {
                ConnectionFactoryDesc = connectionFactoryDesc
            };
            var connectionFactory = new DatabaseDriverConnFactory(
                (DbDriverFactoryConnection)config.ConnectionFactoryDesc, config.ConnectionSettings);
            var connection = connectionFactory.Driver.CreateConnection();

            TryAndCloseConnection(connection);
        }
        /// <summary>
        /// Returns a connection factory for a configured database.
        /// </summary>
        /// <param name="databaseName">is the name of the database</param>
        /// <returns>
        /// is a connection factory to use to get connections to the database
        /// </returns>
        /// <throws>  DatabaseConfigException is thrown to indicate database configuration errors </throws>
        public virtual DatabaseConnectionFactory GetConnectionFactory(String databaseName)
        {
            // check if we already have a reference
            DatabaseConnectionFactory factory;

            if (_connectionFactories.TryGetValue(databaseName, out factory))
            {
                return(factory);
            }

            ConfigurationDBRef config;

            if (!_mapDatabaseRef.TryGetValue(databaseName, out config))
            {
                throw new DatabaseConfigException("Cannot locate configuration information for database '" + databaseName + "'");
            }

            ConnectionSettings settings = config.ConnectionSettings;

            if (config.ConnectionFactoryDesc is DbDriverFactoryConnection)
            {
                DbDriverFactoryConnection dbConfig = (DbDriverFactoryConnection)config.ConnectionFactoryDesc;
                factory = new DatabaseDriverConnFactory(dbConfig, settings);
            }
            else if (config.ConnectionFactoryDesc == null)
            {
                throw new DatabaseConfigException("No connection factory setting provided in configuration");
            }
            else
            {
                throw new DatabaseConfigException("Unknown connection factory setting provided in configuration");
            }

            _connectionFactories[databaseName] = factory;

            return(factory);
        }