2017-03-17 278 views
0

我正在开发一个Excel插件(用于从各种来源定制报告和数据提取)。ODBC连接字符串(DSN)

现在,我与ODBC connection(DSN尤其是)挣扎。尽管我创建了一个专用DSN并指出应用程序使用它,但我必须在连接字符串(pwd,用户名,db名称等)中指定相同的信息才能使其正常工作。

我不想在xml文件中公开此类信息,并想知道是否可以强制应用程序仅使用DSN中的信息(或者,作为替代方案,可以在定制中对连接字符串进行编码xml文件)?

+0

请显示您所做的研究,并解释为什么它没有帮助。这是一个非常常见和广泛记录的话题。不显示你的研究吸引反对票,尤其是对可能有重复答案的常见问题。 –

+0

没有什么特别的。我有一个文件(包含连接信息的自定义XML文件),像这样的: 天青 ODBC; DSN = Azure_SQL; UID =名为myUsername; PWD = userPwd;数据库= TESTDB; 我不明白为什么我需要重复我已经进入DSN相同的数据。我期望以下的东西工作: ODBC; Dsn = Azure_SQL; 即指向应用程序。仅限于DSN,但它不起作用。我不会说这个问题很常见。 –

+0

从我在这里看到的(https://www.connectionstrings.com/dsn/)它无论如何都需要用户名和密码,但我不想将它们保存在共享的xml文件中。现在看来,该文件/康涅狄格州。字符串加密只是选项。 –

回答

0

您可能想要加密连接字符串。详细信息here

static void ToggleConfigEncryption(string exeConfigName) 
{ 
    // Takes the executable file name without the 
    // .config extension. 
    try 
    { 
     // Open the configuration file and retrieve 
     // the connectionStrings section. 
     Configuration config = ConfigurationManager. 
      OpenExeConfiguration(exeConfigName); 

     ConnectionStringsSection section = 
      config.GetSection("connectionStrings") 
      as ConnectionStringsSection; 

     if (section.SectionInformation.IsProtected) 
     { 
      // Remove encryption. 
      section.SectionInformation.UnprotectSection(); 
     } 
     else 
     { 
      // Encrypt the section. 
      section.SectionInformation.ProtectSection(
       "DataProtectionConfigurationProvider"); 
     } 
     // Save the current configuration. 
     config.Save(); 

     Console.WriteLine("Protected={0}", 
      section.SectionInformation.IsProtected); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 
+0

谢谢陪审团,这也是我正在考虑的事情。如果我不想与DSN一起计算,这是我的备用选项。 –

+0

@JohnBull,实际上如MS建议的那样,在安全性方面,配置加密优于DSN:https://msdn.microsoft.com/en-us/library/ee658127.aspx –

相关问题