Example #1
0
        /////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////
        internal static AccessConnectionHolder GetConnection(string dbFileName, bool revertImpersonation)
        {
            dbFileName = dbFileName.Trim();

            /////////////////////////////////////////////////
            // Lock the connections table, and see if it already exists
            lock (_Connections) {
                AccessConnectionHolder holder = (AccessConnectionHolder)_Connections[dbFileName];
                if (holder != null && !File.Exists(holder.Connection.DataSource))
                {
                    _Connections.Remove(dbFileName);
                    holder = null;
                }
                if (holder == null)
                {
                    BuildConnectionForFileName(dbFileName);
                    holder = (AccessConnectionHolder)_Connections[dbFileName];
                }
                if (holder == null)
                {
                    return(null);
                }
                holder.Open(null);
                return(holder);
            }
        }