我有一个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中设置参数?
答案 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);