存储在web.config文件中的连接字符串不会打开SQL Server连接

时间:2016-11-16 13:27:21

标签: c# sql-server visual-studio-2015 sql-server-express

我正在努力学习使用VS2015,我在互联网上看到过与此问题相关的一些类似帖子,但没有一个让我更接近解决方案。

我正在尝试写入SQL Server数据库,并测试了我的数据库和连接字符串,并确认它们都运行良好。

顺便说一下,我进入web.config并为所述连接字符串创建了一个定义:

<connectionStrings>
    <add name="Name" 
         connectionString="Data Source=<desktopname>\\SQLEXPRESS01;Integrated Security=SSPI;Initial Catalog=Database1"/>
</connectionStrings>

据我所知,这种方法很好......

但是,当我声明字符串时如下:

MyConnectionString = ConfigurationManager.ConnectionStrings["Name"].ConnectionString;

以某种方式返回的内容是不可理解的:

SqlConnection iData = new SqlConnection(myConnectionString);

当我尝试“打开”连接时,它失败了...尽管在C#代码中这样声明时连接字符串完全相同:

   SqlConnection iData = new SqlConnection("Data Source=<desktopname>\\SQLEXPRESS01;Integrated Security=SSPI;Initial Catalog=Database1");

有没有人有任何想法?

问题在于,就我所知,信息如何从web.config处理到字符串到SqlConnection

值得注意的是,除非我使用字符串作为连接字符串,否则一切都会完美运行...

提前致谢!

2 个答案:

答案 0 :(得分:2)

在C#中,反斜杠需要加倍,因为编译器将反斜杠视为转义字符。然后\\在运行时使用的实际字符串中编译为\

在XML中并非如此,它使用不同的解析器,所以在Web.Config中你应该使用一个\

<add name="Name" connectionString="Data Source=<desktopname>\SQLEXPRESS01;Integrated Security=SSPI;Initial Catalog=Database1"/>

最重要的是,您可能还需要添加providerName="System.Data.SqlClient"

<add
    name="Name"
    connectionString="Data Source=<desktopname>\SQLEXPRESS01;Integrated Security=SSPI;Initial Catalog=Database1"
    providerName="System.Data.SqlClient"
/>

参考: https://msdn.microsoft.com/en-us/library/bf7sd233(v=vs.85).aspx

答案 1 :(得分:1)

尝试添加:providerName =&#34; System.Data.SqlClient&#34;在你的&#34;&lt;添加名称&#34;

<add name ="Name" connectionString="Data Source=<desktopname>\\SQLEXPRESS01;Integrated Security=SSPI;Initial Catalog=Database1"  providerName="System.Data.SqlClient"/>