[C#] Microsoft Office의 OleDb Provider 문자열을 구한다.
/// <summary>
/// Microsoft Office의 OleDb Provider 문자열을 구한다.
/// </summary>
/// <returns>OleDb Provider 문자열</returns>
/// <remarks>
/// Office 2003 및 이하버전: Microsoft.Jet.OLEDB.4.0
/// Office 2010 및 이하버전: Microsoft.ACE.OLEDB.12.0
/// Office 2013 버전: Microsoft.ACE.OLEDB.15.0
/// </remarks>
public string GetOfficeOleDbConnectString()
{
string sFoundString = "";
try
{
OleDbEnumerator enumerator = new OleDbEnumerator();
DataTable table = enumerator.GetElements();
List<string> aryProviders = new List<string>();
foreach (DataRow row in table.Rows)
aryProviders.Add(row[0].ToString());
table.Dispose();
aryProviders.Sort((p, n) => n.CompareTo(p));
sFoundString = aryProviders.Find(m => m.StartsWith("Microsoft.ACE.OLEDB"));
if (string.IsNullOrEmpty(sFoundString))
sFoundString = aryProviders.Find(m => m.StartsWith("Microsoft.Jet.OLEDB"));
return sFoundString;
}
catch(Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.Message);
}
sFoundString = "Provider=Microsoft.ACE.OLEDB.15.0";
return sFoundString;
}