使用C# .Net连接到LocalDB的SqlConnection

5

我觉得自己很傻,居然要问这个问题,但肯定是我漏掉了什么。

我只是想在我的开发机上的 LocalDB 实例中打开一个新的 SqlConnection。使用的是 Visual Studio 2013。

我可以并且正在使用 SSMS 连接到 LocalDB,没有任何问题。在我正在努力解决的解决方案中,我已经可以成功地使用 Entity Framework 连接到 LocalDB。

在同一解决方案中的另一个项目中,我正试图使用旧式的 SqlConnection 对象连接到 LocalDB,但我完全失败了。

这就是我尝试使用的连接字符串:

SqlConnection SqlConn = new SqlConnection("Server=(LocalDb)\v11.0;Initial Catalog=DBNAME;Integrated Security=SSPI;Trusted_Connection=yes;");

当我调用 SqlConn.Open() 时,会出现错误消息,说它找不到或无法连接到数据库。
这并不重要,因为当它合并到生产中时,连接字符串将被更改,但是我无论如何都无法弄清楚为什么我无法让这个 SqlConnection 对象与 LocalDB 通信。

1
你确定你有一个名为 v11.0实例 吗? - D Stanley
也许吧?我几乎从不使用LocalDB...这是我为使实体框架与LocalDB通信设置的连接字符串 <add name="NHFolding" connectionString="Server=(LocalDb)\v11.0;Integrated Security=true;Initial Catalog=DBNAME" providerName="System.Data.SqlClient" /> - mituw16
这个项目是一个网站项目还是作为不同用户运行的东西? - D Stanley
现在我真的感觉像个白痴...我忘记在C#代码中的连接字符串中转义反斜杠了...现在已经修复了。谢谢@DStanley - mituw16
3个回答

9

看起来你可能需要在连接字符串中转义斜杠。

将这个: "Server=(LocalDb)\v11.0;Initial Catalog=DBNAME;Integrated Security=SSPI;Trusted_Connection=yes;"

变成这个: "Server=(LocalDb)\\v11.0;Initial Catalog=DBNAME;Integrated Security=SSPI;Trusted_Connection=yes;"


这就是全部内容了。谢谢,Zind。 - mituw16
@mituw16 最好的感谢方式是将答案标记为正确 :). Zind找得好! - Termato
1
我计划这样做,@Termato..还需要等待2分钟才能接受答案 :) - mituw16

0
我发现了这个nuget包,它可以方便地处理SQLLocalDB相关的工作。
ISqlLocalDbProvider provider = new SqlLocalDbProvider();
ISqlLocalDbInstance instance = provider.GetOrCreateInstance("MyInstance");

instance.Start();

using (SqlConnection connection = instance.CreateConnection())
{
    connection.Open();

    // Use the connection...
}

instance.Stop();

0
在我的情况下,我正在使用一个单独的PCL中的app.config,当ConfigurationManager.ConnectionStrings正在查找app.config文件中的ConnectionStrings条目时,显然没有被读取。
解决这个问题的方法是编辑(在我的情况下创建,因为没有任何文件)主项目的app.config文件,这样就可以很好地解决了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接