/// <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); }
/// <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); } }