示例#1
0
        /// <summary>
        /// Perform the check for the current provider.
        /// </summary>
        /// <returns></returns>
        public static async Task <IOleDbProvider> CheckForAccessProviderAsync(string preferredProvider = JetDatabase.Providers.AccessEngine12)
        {
            IOleDbProvider returnValue = null;

            // ***
            // *** Get a list of all providers.
            // ***
            IEnumerable <IOleDbProvider> providers = await JetDatabase.GetOleDbProvidersAsync();

            // ***
            // *** Filter Access drivers.
            // ***
            IEnumerable <IOleDbProvider> filtered = providers.Where(t => t.Description.Contains("Jet") | t.Description.Contains("Access Database"));

            // ***
            // *** Check for the preferred provider
            // ***
            IOleDbProvider preferred = filtered.Where(t => t.Name == preferredProvider).SingleOrDefault();

            if (preferred != null)
            {
                MicrosoftAccessProvider.Current     = preferred;
                MicrosoftAccessProvider.IsPreferred = true;
                returnValue = preferred;
            }
            else
            {
                // ***
                // *** Get the first driver in the filtered list.
                // ***
                IOleDbProvider secondary = filtered.FirstOrDefault();

                if (secondary != null)
                {
                    MicrosoftAccessProvider.Current     = secondary;
                    MicrosoftAccessProvider.IsPreferred = true;
                    returnValue = secondary;
                }
                else
                {
                    MicrosoftAccessProvider.Current     = null;
                    MicrosoftAccessProvider.IsPreferred = false;
                    returnValue = null;
                }
            }

            return(returnValue);
        }
示例#2
0
        /// <summary>
        /// Sets the preferred provider by name. This provider is used by all
        /// newly created instances of AccessDatabase.
        /// </summary>
        /// <param name="providerName">The name of the provider to user.</param>
        public static async Task SetProviderByNameAsync(string providerName)
        {
            // ***
            // *** Check for the preferred provider
            // ***
            IOleDbProvider selected = (await MicrosoftAccessProvider.Providers()).Where(t => t.Name == providerName).SingleOrDefault();

            if (selected != null)
            {
                MicrosoftAccessProvider.Current     = selected;
                MicrosoftAccessProvider.IsPreferred = true;
            }
            else
            {
                throw new SpecifiedProviderNotFoundException(providerName);
            }
        }