检查数据集空值的函数?

时间:2014-01-10 15:38:48

标签: c# null dataset

我有一个C#应用程序(WinForm),可以将一些信息输入到多个DataSet中。从数据集中我将信息保存为一些字符串和int变量。有时值为null。所以我想在尝试存储到变量之前创建一个检查空值的函数,这样我就不会出现任何错误。

所以简而言之,我想替换这样的代码(假设我已经有2个名为“dataSet1”和“dataSet2”的DataSet):

row1 = dataSet1.Tables[0].Rows[0];
if(row1.IsNull("Department")) {errorMsg}
else if(row1.IsNull("Name")) {errorMsg}
else 
//run code


row2 = dataSet2.Tables[0].Rows[0];
if(row2.IsNull("Department")) {errorMsg}
else if(row2.IsNull("Name")) {errorMsg}
else 
//run code

更自动化的内容,如:

//the function
bool NullChecker(string datasetName, int rowNr, string fieldName)
{ 
if(datasetName.Tables[0].Rows[rowNr].IsNull(fieldName)) return false;
  else return true;
}

//back in the code
string[] datasetNames; int[] rowNrs; string[] fieldNames;

for(int i=0; i<someLength; i++)
{ NullChecker(datasetNames[i], rowNrs[i], fieldNames[i]);}

可能?你认为这可能会减慢我的代码吗?

3 个答案:

答案 0 :(得分:1)

您可以为空检查创建扩展方法

public static class Extensions
{
    public static bool IsNull(this DataSet dataSet, int rowNumber, string columnName)
    {
        return dataSet.Tables[0].Rows[rowNumber].IsNull(columnName);
    }
}

然后你可以像

一样使用它
dataSet1.IsNull(0, "column");

如果您还要打印错误消息,只需添加参数string errorMsg,然后在从方法调用返回之前,打印通过参数传递的文本,如下所示

public static bool IsNull(this DataSet dataSet, int rowNumber, string columnName, string errorMsg)
{
    if(dataSet.Tables[0].Rows[rowNumber].IsNull(columnName))
    {
        // print an error message using Console or MessageBox, or whatever you use
        return true;
    }

    return false;
}

然后你可以像

一样使用它
dataSet1.IsNull(0, "column", "error");

答案 1 :(得分:0)

似乎代码足够好,只需要一个小编辑,需要用Database []数组替换字符串数组datasetName。

答案 2 :(得分:0)

 if (dataSet1 != null && dataSet1.Tables.Count > 0)

---- further do actions