我有以下工作代码。但是,我没有SqlParameter构造函数,它接受name,value和SqlDbType,我想只提供日期参数的类型。有没有办法做到这一点,不需要添加大量的代码?
SqlParameter[] parameters =
{
new SqlParameter("@START_ORDER", startOrder),
new SqlParameter("@END_ORDER", endOrder),
new SqlParameter("@START_ITEM", startItem),
new SqlParameter("@END_ITEM", endItem),
new SqlParameter("@START_DUEDATE", dateFrom),
new SqlParameter("@END_DUEDATE", dateTo)
};
答案 0 :(得分:6)
new SqlParameter("@name", SqlDbType.Whatever) { Value = value }
有constructor overloads可以采用各种参数,但它们可能不值得指定每个参数的麻烦。以上可能很简单。
(请注意,在某些情况下,您可能需要设置SqlValue
而不是Value
。)
答案 1 :(得分:1)
如果你正在做很多手动ADO.NET,一个很好的选择可能是在基类或实用程序类中构建一些帮助程序,这也有助于确保你传递正确的类型: / p>
public static SqlParameter CreateStringParam(string paramName,
int length, string value) {}
public static SqlParameter CreateIntParam(string paramName,
int? value) {}
// etc...
这些助手可以通过将null
转换为DBNull.Value
来帮助您,并确保您记住字符串和数字的参数大小。
最多你需要构建十几个,但很可能你只使用少数数据类型,所以你不需要很多这些。