我有一本词典。我只是试图抓住密钥并使用它们来更新数据库。
foreach (string key in dt.Keys)
{
var param = comm.Parameters.AddWithValue("@_AccountList", key);
var paddingParam = comm.Parameters.AddWithValue("@padding", padding);
var dateStartParam = comm.Parameters.AddWithValue("@proc_dateStart", startDate);
var dateEndParam = comm.Parameters.AddWithValue("@proc_dateEnd", endDate);
//table valued parameters
param.SqlDbType = SqlDbType.Structured;
var reader = comm.ExecuteNonQuery();
}
我的存储过程中的数据类型是varchar
,应该可以使用。我不确定为什么要将我的密钥转换为IEnumerable。它可能与使用表值参数有关吗?
答案 0 :(得分:4)
您param
变量包含NVarChar
类型的参数(隐式),因为key
是一个字符串,但由于某种原因您将其类型设置为SqlDbType.Structured
。因此,数据提供程序尝试遍历该值,但不能,因为该值只是string
类型。