SQLConnection中的参数无效

时间:2015-04-15 18:26:36

标签: c# .net sql-server tsql

我有一个连接到数据库的.NET应用程序。

在我的web.config文件中

<connectionStrings>
    <add name="TFOUNDATION" 
         connectionString="Data Source=TAPOLCISQL01;Initial Catalog=TapolciFoundation;Persist Security Info=True;User ID=XXXX;Password=XXXXX" 
         providerName="System.Data.SqlClient"/>
</connectionStrings>

删除了用户名和密码。

在我的代码后面,我打开这样的连接

protected void grabData()
{
    SqlCommand cmd = new SqlCommand("SELECT FirstName FROM CauseMarketers", new SqlConnection(ConfigurationManager.ConnectionStrings["TFOUNDATION"]));
}

我收到的错误是

  

最佳重载方法匹配&#34; System.Data.SQLClient.SQLConnection.SQLConnection(string)&#34;有一些无效的论点。

我不确定我在这里做错了什么。

4 个答案:

答案 0 :(得分:7)

您需要在您获取的配置中使用.ConnectionString属性:

protected void grabData()
{
    // use the .ConnectionString property to get the connection string!
    string connStr = ConfigurationManager.ConnectionStrings["TFOUNDATION"].ConnectionString;

    SqlCommand cmd = new SqlCommand("SELECT FirstName FROM CauseMarketers", new SqlConnection(connStr));
}

答案 1 :(得分:0)

每当我打开数据库连接时,总是会提示我在其上调用ToString()

您是否尝试过ConfigurationManager.ConnectionStrings["TFOUNDATION"].ToString();

答案 2 :(得分:0)

删除“Persist Security Info = True;”可以解决这个问题。请试试。

答案 3 :(得分:0)

为什么要使用&#39;持久安全信息&#39; ?

  

ConnectionString类似于OLE DB连接字符串,但不完全相同。与OLE DB或ADO不同,返回的连接字符串与用户设置的ConnectionString相同,如果Persist Security Info值设置为false(默认值),则减去安全信息。除非将Persist Security Info设置为true,否则SQL Server的.NET Framework数据提供程序不会在连接字符串中保留或返回密码。

来源:MSDN Article about SqlConnection

此网站包含您需要了解的有关连接字符串的所有信息,以及使用哪一个以及connectionstrings.com的方式,此页面是关于您使用的提供商System.Data.SqlClient.SqlConnection

  

标准安全   Server = myServerAddress; Database = myDataBase; User Id = myUsername;   密码= MYPASSWORD;

因此,请尝试删除&#39;持久保密信息&#39;并更改初始目录&#39;到数据库&#39;。