【问题标题】:VS C# constring for Microsoft SQL Server Express 2008 R2Microsoft SQL Server Express 2008 R2 的 VS C# 字符串
【发布时间】:2013-01-06 16:38:47
【问题描述】:

我正在制作一个在 Windows 7 64 位上使用 SQL Server 2008 R2 Express 的 C# 应用程序。我面临的问题是我无法连接到我的数据库,因为我的连接字符串错误。我正在使用 .udl 文件来制作连接字符串,这就是它给我的:

Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Restorant;
DataSource=.\SQLEXPRESS

此连接字符串正在创建一个错误,指出存在无法识别的转义值。我尝试将我的数据源更改为(本地),因为我的朋友说它适用于他们的项目,但由于未知实例名称错误,我无法连接。

我还有其他方法可以连接到我的数据库吗?

【问题讨论】:

  • 供将来参考 Sandy,当您在字符串` you should always use the @` 符号中有返回字符时,否则在 C# 中您需要使用 `\`

标签: c# database-connection sql-server-2008r2-express


【解决方案1】:

在 C# 中,字符 \ 被视为 escaping sequence 中的第一个字符。
因为您的Data Source=.\SQLEXPRESS\S 未被识别为有效的转义序列,所以您会收到错误消息。

所以你需要构造你的连接字符串,前缀为@或转义字符\\的两倍 @字符的解释见Working With Strings

string conString = @"Integrated Security=SSPI;Persist Security Info=False;" + 
                   @"Initial Catalog=Restorant;Data Source=.\SQLEXPRESS";

如果必须,请记住使用此方法逐字制作多个字符串。

还要注意连接字符串的数据源部分中的小错误。它需要数据和源之间的空间。见connectionstrings.com

【讨论】:

  • 感谢您的解释,因为我是 C# 新手,所以我没有这种规则 ^^
  • 很高兴能提供帮助。如果对你有用,请记得采纳答案。
【解决方案2】:

现在您的连接字符串正在尝试转义S,例如.\S。改成这个

//double the backslash to escape the slash
string connectionString = "Integrated Security=SSPI;Persist Security Info=False;
          Initial Catalog=Restorant; Data Source=.\\SQLEXPRESS";

//precede the string with @
string connectionString = @"Integrated Security=SSPI;Persist Security Info=False;
          Initial Catalog=Restorant; Data Source=.\SQLEXPRESS";  

【讨论】:

  • 感谢您的帮助,现在可以了 :) 我正在使用您的第一个建议,因为我认为这对我来说更容易记住 :)
【解决方案3】:

尝试将数据源名称更改为数据源Data Source=localhost\SQLExpress

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多