我正在努力学习使用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
。
值得注意的是,除非我使用字符串作为连接字符串,否则一切都会完美运行...
提前致谢!
答案 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"/>