平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“读取注册表根据Office版本获取数据库连接字段”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
/// <summary>
/// 读取注册表,根据Office版本获取数据库连接字段
/// </summary>
/// <returns>数据库连接字段</returns>
private string GetConnectionString()
{
string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = ";
RegistryKey rk = Registry.LocalMachine;
//查询Office2003
RegistryKey f03 = rk.OpenSubKey(@"SOFTWAREMicrosoftOffice11.0AccessInstallRoot");
//查询Office2007
RegistryKey f07 = rk.OpenSubKey(@"SOFTWAREMicrosoftOffice12.0AccessInstallRoot");
//查询Office2010
RegistryKey f10 = rk.OpenSubKey(@"SOFTWAREMicrosoftOffice14.0AccessInstallRoot");
if (f03 != null)
{
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = ";
}
else if (f07 != null || f10 != null)
{
strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = ";
}
return strConnectionString;
}