我想为返回字符串的“ProductState”列处理空值。
但是 isDBNull 仅接受整数参数。请在这里更改什么?
string _productState = "";
if (!dr.IsDBNull("ProductState"))
_productState= dr.GetString("ProductState");
else
_productState= "";
最佳答案
if (!dr.IsDBNull(dr.GetOrdinal("ProductState")))
您可以编写扩展方法来封装此功能
public static class ReaderExtensions
{
public static bool IsDBNull(this SqlDataReader reader, string colName)
{
return reader.IsDBNull(reader.GetOrdinal(colName));
}
}
现在,您将能够通过字符串调用IsDBNull
if (!dr.IsDBNull("ProductState"))
在查看代码
(reader.GetString("ProductState"))
时,我认为您正在使用MySql提供程序,该提供程序提供了扩展名GetString
(以及其他GetXXXX),该扩展名以列名作为参数。但是,如果您有SqlDataReader,则还需要使用GetOrdinal(或其他扩展名)更改该调用,因为SqlClient没有以列名作为参数的GetString。