Visual Basic中OR表达式语法及Dataset结果校验问题
问题1:Visual Basic中实现短路逻辑或的方法
Visual Basic中提供了专门的短路逻辑运算符OrElse,将你原有代码里的非短路运算符Or替换为OrElse,就能实现「前序条件判定为真时,直接停止执行后续表达式」的效果,对应短路逻辑与的运算符为AndAlso。
修改后的校验代码如下:
If ((testDataset Is Nothing) OrElse (testDataset.Tables Is Nothing) OrElse testDataset.Tables.Count = 0 _ OrElse (testDataset.Tables.Item(0).Rows Is Nothing) OrElse (testDataset.Tables.Item(0).Rows.Count = 0) _ OrElse (testDataset.Tables.Item(0).Rows(0) Is Nothing)) Then MessageBox.Show("Dataset has no results!", "Database Query Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Return False End If
该写法可以避免前序已经判定对象为空时,后续访问对象属性抛出空引用异常的问题。
问题2:校验Dataset包含至少一行有效数据且存在指定列
在上述基础有效性校验通过后,调用DataColumnCollection.Contains方法即可判断指定列是否存在,完整校验逻辑如下(示例中校验的列名为target_column,可替换为实际需要校验的列名):
' 基础数据有效性校验 If testDataset Is Nothing OrElse testDataset.Tables Is Nothing OrElse testDataset.Tables.Count = 0 OrElse testDataset.Tables(0).Rows Is Nothing OrElse testDataset.Tables(0).Rows.Count = 0 OrElse testDataset.Tables(0).Rows(0) Is Nothing Then MessageBox.Show("Dataset has no results!", "Database Query Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Return False End If ' 追加指定列存在性校验 If Not testDataset.Tables(0).Columns.Contains("target_column") Then MessageBox.Show("指定列不存在!", "数据结构错误", MessageBoxButtons.OK, MessageBoxIcon.Error) Return False End If ' 校验全部通过 Return True
内容的提问来源于stack exchange,提问作者VSB
相关产品推荐
相关产品推荐

