【问题标题】:Keyword not supported in Connection String: 'database'连接字符串中不支持的关键字:“数据库”
【发布时间】:2013-05-15 21:35:29
【问题描述】:

对 C# 和 VS2012 非常陌生。

我正在尝试连接到本地数据库连接。

这里是代码

        string selectSql = "select * from Tasks";
        string connectionString = "Data Source=adamssqlserver;database=master;Integrated Security=true;";

        using (var cn = new SqlCeConnection(connectionString))
        using (var cmd = new SqlCeCommand(selectSql, cn))
        {
            cn.Open();

            using (var reader = cmd.ExecuteReader())
            {

                //do something

            }
        }

这是错误

不支持关键字:“数据库”。

如果我先放入初始目录

"数据源=adamssqlserver;初始目录=etc;"

然后错误给出了相同的消息,但对于“初始目录”。

这是我的数据连接

【问题讨论】:

  • “CE”连接是否只支持一个数据库/源或其他不稳定的东西?在 普通 SQL Server 连接 (SqlConnection) 中,发布的两种语法都可以正常工作。
  • 您使用的是哪个版本的 SQL Server?您正在使用 CE 对象,但您的连接字符串似乎用于完整的 SQL 服务器。
  • 我的机器上安装了 SQL Server 2005、2008 和 2012。但我相信它使用的是 SQL Server 2012,因为我给它的标题是 adamssqlserver。 CE 不是用于完整的 SQL Server 连接吗?
  • @adam 从未使用过 CE(在 Microsoft 术语中代表“紧凑版”),但将其切换到 SqlConnection 并再试一次:D
  • 就是这样!现在我到了 cn.Open() ,然后它就严重失败了。我想我会研究并可能打开一个新帖子,新问题。感谢您的帮助!

标签: c# sql sql-server visual-studio connection


【解决方案1】:

您使用的是SqlCeConnection 而不是SqlConnection

这个类(SqlCeConnection)是针对Sql Compact Edition的,连接字符串的语法规则不同。例如:

Data Source=MyData.sdf;Persist Security Info=False;

相反,您的连接字符串用于Sql ServerSql Server Express。 因此,如果您的目标数据库是标签所指示的 SqlServer 数据库,那么您需要使用

using (var cn = new SqlConnection(connectionString))
using (var cmd = new SqlCommand(selectSql, cn))
{
   ....
}

【讨论】:

  • 谢谢!我现在到 cn.Open();行,它会生成一个显着的错误消息 ------------------------------- ----------- --------------- ---------------- “建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)"
【解决方案2】:

代替数据源,尝试服务器,例如:

string connectionString = "Server=adamssqlserver;Database=master";

【讨论】:

  • 这个 --> connectionString = "Server=adamssqlserver;Database=master;Integrated Security=true;";给出错误消息 --> 不支持关键字:'server'。
  • 确实,刚刚阅读了您的问题上发布的其他 cmets,我发现我错过了您正在使用 CE,在这种情况下,数据源是正确的关键字,然后是“初始目录”。
【解决方案3】:

website 包含有关设置连接字符串的有用信息。有很多选择,我通常必须求助于参考才能正确设置它。

【讨论】:

    【解决方案4】:

    提醒一下:在使用 MS Access 数据库时,需要使用 OleDbConnection 和 OleDbCommand,而不是 SqlConnection 和 SqlCommand。 SqlConnection 连接字符串中的“提供者”在 AFAIK 中无效。

    【讨论】:

      【解决方案5】:

      您是否缺少连接字符串部分中的 "。

      应该是

      <add name="StevenTestEntities" 
      connectionString="metadata=res://*/Model.TestModel.csdl|res://*/Model.TestModel.ssdl|res://*/Model.TestModel.msl;
      provider=System.Data.SqlClient;
      provider connection string=&quot;Data Source=Data Source=D000097;
      Initial Catalog=StevenTest;
      Integrated Security=True;MultipleActiveResultSets=True&qout;"
      providerName="System.Data.EntityClient" />
      

      试试看。

      【讨论】:

        猜你喜欢
        • 2021-11-09
        • 2018-07-10
        • 2016-02-02
        • 2011-12-30
        • 1970-01-01
        • 1970-01-01
        • 2020-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多