DoI*_*oIt 2 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);
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,当我将连接属性初始化为我的命令使用时cmd.Connection = connectioString,是抛出异常,如下所示
无法将类型'string'隐式转换为'System.Data.SqlClient.SqlConnection'
我想你需要
cmd.Connection = con;
Run Code Online (Sandbox Code Playgroud)
您尝试SqlCommand.Connection使用连接字符串设置属性.但是此属性用于指定SqlConnection对象,而不是连接字符串.
从文件;
获取或设置此SqlCommand实例使用的SqlConnection.
并且由于没有从SqlConnection到字符串的隐式对话,这就是编译时错误的原因.
作为一个侧面说明,使用using的语句来处理你SqlConnection和SqlCommand等;
using(SqlConnection con = new SqlConnection(connectionString))
using(SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
...
...
}
Run Code Online (Sandbox Code Playgroud)
或者您可以使用SqlConnection.CreateCommand()方法在您的使用声明中创建SqlCommand关联的SqlConnection内容;
using(SqlConnection con = new SqlConnection(connectionString))
using(SqlCommand cmd = con.CreateCommand())
{
...
...
}
Run Code Online (Sandbox Code Playgroud)
您混淆了连接数据库和实际SqlConnection所需的连接字符串.
试试这个(针对您的具体代码):
cmd.Connection = con;
Run Code Online (Sandbox Code Playgroud)
根据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();
}
}
Run Code Online (Sandbox Code Playgroud)
链接到原始文章:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.aspx