【问题标题】:Keyword not supported 'provider' error关键字不支持“提供者”错误
【发布时间】:2011-07-18 10:51:21
【问题描述】:

带有 SQL Server 2000 后端的 c#.Net 3.5,我的 app.config 文件中有一个连接字符串,如下所示

<add name="MFG_ConnectionString" 
  connectionString="Provider=SQLOLEDB;Data Source=MFG;Persist Security Info=True;Password=kb1234;User ID=kb;Initial Catalog=MFG" 
  providerName="System.Data.OleDb" /> 

此连接字符串是使用数据源配置向导构建的。使用它创建数据集并拖动 DataSource 元素以创建 DataGridView 填充并成功允许所有 CRUD 操作。

但是,我不希望通过数据绑定表单对此进行更改。我希望在代码的幕后做到这一点。由于这是 SQL Server 的旧版本,我假设我必须使用 OleDbConnection 和其他 OleDb 对象来完成工作。当我尝试执行以下操作时:

OleDbConnection visualConnection = new OleDbConnection(ConfigurationManager.ConnectionStrings["MFG_ConnectionString"].ConnectionString);

我得到一个例外:“关键字不支持'供应商'。
然而,如果我取出提供者,我会被告知我必须提供一个。不知道为什么这通过表单上的数据集起作用,但我无法创建自己的连接对象......有什么想法吗?

EDIT 应该注意的是,当我最初创建到这个数据库的连接时,它告诉我我试图连接的数据库不支持 SqlConnection,我必须选择另一个(我的当时的选择是 OleDb)。奇怪的是,这个连接在幕后作为 SqlConnection 工作,连接字符串中没有提供者,但数据集随后中断......

【问题讨论】:

    标签: c# .net-3.5 sql-server-2000 connection-string


    【解决方案1】:

    SqlConnection 在 SQL 2000 上运行良好。您可以获得连接字符串示例 here

    【讨论】:

    • 更改为 SqlConnection 给了我同样的错误,所以我进去取出字符串的 Provider 部分,它工作正常。现在我试图找出原因。如果我将连接字符串更改为排除提供程序,则数据集将停止正常运行。唯一的解决方案是有两个连接字符串,一个用于数据集,另一个用于手动连接?
    • 当您切换到 SqlConnection 时,您的连接字符串应该看起来像网站上的连接字符串之一。我个人最喜欢的是“Server=SOMESERVERNAME;Database=SOMEDATABASENAME;User ID=SOMEUSERID;Password=SOMEPASSWORD;” - 有了它,无论您是检索 DataSet、阅读器、执行命令还是使用任何 ORM,连接都应该没有问题。
    • 这是我切换到的,它在后面的代码中工作得很好。但是,使用此连接链接到数据集的表单上的所有控件都停止运行,因为它无法再解释连接字符串。出于某种原因,连接字符串中没有提供者,我失去了在表单上绑定数据集的能力
    • 如何绑定表单控件?如果您的标记中有一个连接,例如 OleDbDataSource 对象,那么它也需要更改为 SqlDataSource。但是,IMO 你真的不应该这样做,因为它打破了将你的客户和你的数据分开的想法。
    • IDE 已经为我处理了所有这些,我将表格拖到表单上以创建 datagridview 并从那里自定义输出。必须在幕后使用其中一张表来做出其他决定,但如果它不允许我将其更改为 sqlconnection。说这个版本不支持它,虽然我开始认为它指的是不支持这个数据绑定功能......
    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 2017-07-03
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    相关资源
    最近更新 更多