连接字符串在C#windows应用程序中不起作用

时间:2014-04-22 19:58:23

标签: c# sql sqlconnection

由于某些原因,我无法使用我的连接字符串建立数据连接。我正在使用以下代码

var connectionString = ConfigurationManager.ConnectionStrings["connection"].ConnectionString;
SqlCommand cmd = new SqlCommand();
SqlConnection con = new SqlConnection(connectionString);
cmd.Connection = connectionString;

cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = " dbo.SelectAll";

SqlParameter param = new SqlParameter("@tradeDate","201401");

param.Direction = ParameterDirection.Input;
param.DbType = DbType.String;
cmd.Parameters.Add(param);

但由于某些原因,当我使用cmd.Connection = connectioString将连接属性初始化为我的命令时,是抛出异常,如下所示

  

无法隐式转换类型'string'   'System.Data.SqlClient.SqlConnection'

2 个答案:

答案 0 :(得分:5)

我认为你只需要

cmd.Connection = con;

您尝试使用连接字符串设置SqlCommand.Connection属性。但是此属性用于指定您的SqlConnection对象,而不是您的连接字符串。

来自文档;

  

获取或设置此实例使用的 SqlConnection   的SqlCommand。

由于没有从SqlConnection到字符串的隐式对话,这就是编译时错误的原因。

作为旁注,请使用using statement来处理您的SqlConnectionSqlCommand之类的内容;

using(SqlConnection con = new SqlConnection(connectionString))
using(SqlCommand cmd = new SqlCommand())
{
   cmd.Connection = con;
   ...
   ...
}

或者您可以使用SqlConnection.CreateCommand() method在您的使用声明中创建与SqlCommand相关联的SqlConnection;

using(SqlConnection con = new SqlConnection(connectionString))
using(SqlCommand cmd = con.CreateCommand())
{
   ...
   ...
}

答案 1 :(得分:5)

您混淆了连接数据库和实际SqlConnection所需的连接字符串。

试试这个(针对您的具体代码):

cmd.Connection = con;

根据MSDN,这是一个恰当的例子:

private static void CreateCommand(string queryString, string connectionString)
 {
    using (SqlConnection connection = new SqlConnection(connectionString))
     {
        SqlCommand command = new SqlCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
}

链接到原始文章:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.aspx