由于某些原因,我无法使用我的连接字符串建立数据连接。我正在使用以下代码
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'
答案 0 :(得分:5)
我认为你只需要
cmd.Connection = con;
您尝试使用连接字符串设置SqlCommand.Connection
属性。但是此属性用于指定您的SqlConnection
对象,而不是您的连接字符串。
来自文档;
获取或设置此实例使用的 SqlConnection 的SqlCommand。
由于没有从SqlConnection到字符串的隐式对话,这就是编译时错误的原因。
作为旁注,请使用using
statement来处理您的SqlConnection
和SqlCommand
之类的内容;
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