提供SqlDbType的有效方法?

时间:2015-05-18 21:06:58

标签: c# sqlparameters

我有以下工作代码。但是,我没有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)
};

2 个答案:

答案 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来帮助您,并确保您记住字符串和数字的参数大小。

最多你需要构建十几个,但很可能你只使用少数数据类型,所以你不需要很多这些。