提供 SqlDbType 的有效方式?
Efficient way of providing SqlDbType?
我在下面有这个工作代码。但是,我没有采用名称、值和 SqlDbType 的 SqlParameter 构造函数,我只想提供日期参数的类型。有没有一种不需要添加大量代码的方法?
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)
};
new SqlParameter("@name", SqlDbType.Whatever) { Value = value }
有 constructor overloads 接受各种参数,但它们可能不值得指定每个参数的麻烦。上面的内容可能就这么简单。
(请注意,在某些情况下,您可能希望设置 SqlValue
而不是 Value
。)
如果您要进行大量手动操作 ADO.NET,一个不错的选择可能是在基础 class 或实用程序 class 中构建一些助手,这也有助于确保您传递正确的类型:
public static SqlParameter CreateStringParam(string paramName,
int length, string value) {}
public static SqlParameter CreateIntParam(string paramName,
int? value) {}
// etc...
这些助手可以帮助您将 null
转换为 DBNull.Value
,并确保您记住字符串和数字的参数大小。
您最多需要构建一打左右,但很可能您只使用了少数几种数据类型,因此您不需要很多。
我在下面有这个工作代码。但是,我没有采用名称、值和 SqlDbType 的 SqlParameter 构造函数,我只想提供日期参数的类型。有没有一种不需要添加大量代码的方法?
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)
};
new SqlParameter("@name", SqlDbType.Whatever) { Value = value }
有 constructor overloads 接受各种参数,但它们可能不值得指定每个参数的麻烦。上面的内容可能就这么简单。
(请注意,在某些情况下,您可能希望设置 SqlValue
而不是 Value
。)
如果您要进行大量手动操作 ADO.NET,一个不错的选择可能是在基础 class 或实用程序 class 中构建一些助手,这也有助于确保您传递正确的类型:
public static SqlParameter CreateStringParam(string paramName,
int length, string value) {}
public static SqlParameter CreateIntParam(string paramName,
int? value) {}
// etc...
这些助手可以帮助您将 null
转换为 DBNull.Value
,并确保您记住字符串和数字的参数大小。
您最多需要构建一打左右,但很可能您只使用了少数几种数据类型,因此您不需要很多。