C#:如何将字符串设置为SqlParameter?

时间:2014-01-08 13:52:55

标签: c# sql parameters

我有一个DataTable。如何设置它的某个值作为我的SqlParameters之一? 我收到此错误消息: The SqlParameterCollection only accepts non-null SqlParameter type objects, not String objects.

我要么:

myCommand.Parameters.Add("@managedBy");
myCommand.Parameters["@managedBy"].Value = comp.Rows[i][4].ToString();

myCommand.Parameters.Add("@modified_at");
myCommand.Parameters["@modified_at"].Value = DateTime.Now.ToString("MM/dd/yyyy");

myCommand.Parameters.Add("@cn");
myCommand.Parameters["@cn"].Value = comp.Rows[i][1].ToString();

或:

myCommand.Parameters.Add("@managedBy");
myCommand.Parameters["@managedBy"].Value = (SqlParameter)comp.Rows[i][4];

myCommand.Parameters.Add("@modified_at");
myCommand.Parameters["@modified_at"].Value = DateTime.Now.ToString("MM/dd/yyyy");

myCommand.Parameters.Add("@cn");
myCommand.Parameters["@cn"].Value = (SqlParameter)comp.Rows[i][1];

我错过了什么?如何从DataTable中设置参数?

3 个答案:

答案 0 :(得分:1)

SqlCommand对象中的SqlParametersCollection有一个需要SqlParameter对象的Add方法。

所以你的代码应该是这样的

 myCommand.Parameters.Add(new SqlCommand("@managedBy", SqlDbType.AnsiString)).Value = .......;

为集合添加新参数有很多种可能性,最简单的是

 myCommand.Parameters.AddWithValue("@managedBy", comp.Rows[i][4].ToString());

此特定版本需要特别注意,如very detailed article on MSDN

中所述

答案 1 :(得分:1)

SqlParameterCollection.Add方法重载一个参数要求参数为SqlParameter。要使用字符串名称创建参数,还需要指定类型(以及可选的大小):

myCommand.Parameters.Add("@managedBy", SqlDbType.NVarChar);

要在一次调用中设置值,您可以使用AddWithValue,wihch将从值类型推断出SQL类型:

myCommand.Parameters.AddWithValue("@managedBy", comp.Rows[i][4]);

答案 2 :(得分:0)

使用以下代码:

myCommand.Parameters.AddWithValue("ParameterName", anyObject);