【问题标题】:How to define a connection string to a SQL Server 2008 database?如何定义 SQL Server 2008 数据库的连接字符串?
【发布时间】:2010-07-01 23:44:02
【问题描述】:

我正在使用 MS Visual Studio 2010 创建一个具有 SQL Server 2008 数据库访问权限的应用程序,但我创建数据库所做的是添加一个新的“SQL Server 2008 数据库项目”,它添加了它,并向我展示了所有内容在我的解决方案资源管理器上,但是我如何编写连接字符串来连接它,因为我写了这个,它没有工作。

SqlConnection cnTrupp = new SqlConnection("Initial Catalog = Database;Data Source = localhost;Persist Security Info=True;");

更新:

我用过这个:

cnTrupp = new SqlConnection("database=DB_Trupp;server=.\\SQLExpress;Persist Security Info=True;integrated security=SSPI");

但是当我使用cnTrupp.Open() 时,它告诉我登录失败。

【问题讨论】:

标签: c# sql visual-studio-2010


【解决方案1】:

查看connection strings 网站,该网站有大量的连接字符串示例。

基本上,你需要三样东西:

  • 您要连接的服务器的名称(本地机器使用“.”或(local)localhost
  • 要连接的数据库的名称
  • 某种定义安全性的方法 - 集成 Windows 安全性,或定义用户名/密码组合

例如,如果您想使用集成安全连接到本地计算机和 AdventureWorks 数据库,请使用:

server=(local);database=AdventureWorks;integrated security=SSPI;

或者,如果您的计算机上默认安装有 SQL Server Express,并且您想连接到 AdventureWorksLT2008 数据库,请使用以下命令:

server=.\SQLExpress;database=AdventureWorksLT2008;integrated Security=SSPI;

【讨论】:

  • localhost 与 Web 或 HTTP 无关。它适用于 SQL Server。
  • 你能提供 localhost vs (local) vs 的源码吗?信息?我一直认为你可以使用 localhost...
  • @Abe Miessler:不,你完全正确 - localhost 也可以。很抱歉造成混乱.....
【解决方案2】:

标准安全
数据源=serverName\instanceName;初始目录=myDataBase;用户ID=myUsername;Password=myPassword;

可信连接
数据源=serverName\instanceName;初始目录=myDataBase;集成安全=SSPI;

这里有一个关于连接字符串的很好的参考资料,我很方便:ConnectionStrings.com

【讨论】:

  • 好的,但是我要安装到另一台电脑上,我怎么知道对方的电脑名?
  • 安装什么?数据库还是应用程序?您在连接字符串中唯一关心的是数据库在哪里。
  • 我想你可能会混淆 serverName\instanceName 指的是 SQLServer,而不是运行代码的机器。
【解决方案3】:

您需要指定如何通过数据库进行身份验证。如果您想使用集成安全性(这意味着使用本地或域 Windows 帐户使用 Windows 身份验证),请将其添加到连接字符串:

Integrated Security = True;

如果您想使用 SQL Server 身份验证(意味着您指定登录名和密码而不是使用 Windows 帐户),请添加以下内容:

User ID = "username"; Password = "password";

【讨论】:

    【解决方案4】:

    将以下内容复制/粘贴到您的代码中:

    SqlConnection cnTrupp = new SqlConnection("Initial Catalog = Database;Data Source = localhost;Persist Security Info=True;Integrated Security = True;");
    

    请记住,此解决方案使用您的 Windows 帐户登录。

    正如约翰和亚当所说,这与您登录(或不登录)的方式有关。查看 John 提供的链接以获得更好的解释。

    【讨论】:

    • localhost 是本地适配器的系统标识符。它会工作得很好;在 SSMS 中试一试。
    • @Adam Robinson:你说得对 - 就像一个魅力。不知道我从哪里得到的……好吧,今天学到了一些新东西! :-)
    【解决方案5】:

    我建议您使用 .config 文件中的专用 <connectionStrings> 元素并从那里检索它,而不是直接在代码中编写它。

    还可以使用using 语句,以便在使用后您的连接会自动关闭和处理。

    查找连接字符串的绝佳参考:connectionstrings.com/sql-server-2008

    【讨论】:

    • +1 他提出了一个很好的观点并为连接字符串信息提供了资源。
    • @Abe:他的“重点”是“查一下”。将其添加到解决实际问题的答案中是好的。发布与问题无关的信息,虽然很好知道,但不是。
    • 我同意仅发布链接是弱酱。我认为他说他应该把它放在 .config 文件中的观点很好(虽然有点离题)。如果他刚刚发布了链接或刚刚发布了 .config 建议,我会同意 -1 分。综合起来,我认为它应该得到 0 分。
    • 但链接在答案中。只需单击将 OP 引导至 MSDN 页面的 部分,并从那里找到有关如何读取它的代码 sn-p。我在降价方面遇到了一些问题,仍在学习它,将 [ 和 结合起来
    猜你喜欢
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多