You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataReader中条件不满足时跳过当前记录

DataReader中跳过指定Null值记录的实现方法

要实现当指定列值为Null时跳过当前记录、直接处理下一条的需求,你可以使用C#的continue关键字——它会立即终止当前循环的剩余代码执行,跳转到下一次循环迭代,也就是触发dr.Read()读取下一条记录。

修改后的代码示例

using (OleDbConnection con = new OleDbConnection(yourConnectionString))
using (OleDbCommand cmd = new OleDbCommand(yourSqlQuery, con))
{
    con.Open();
    using (OleDbDataReader dr = cmd.ExecuteReader())
    {
        try
        { 
            while (dr.Read())
            {
                // 先判断目标列(索引1)是否为Null,是则直接跳过当前记录
                if (dr.IsDBNull(1))
                {
                    continue;
                }

                // 处理非Null的记录逻辑
                if (!dr.IsDBNull(0))
                {
                    ID = dr.GetString(0); // GetString已返回字符串,无需额外ToString()
                }                     
                REFERENCE = dr.GetString(1);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());
        }
    }
}

关键说明

  1. continue的作用:在dr.IsDBNull(1)的判断分支中加入continue,会直接跳过当前记录的后续处理逻辑,进入下一次dr.Read()读取下一条数据,完美适配DataReader仅向前的特性。
  2. 代码优化点:
    • dr.GetString(0).ToString()是冗余操作,GetString方法本身就返回string类型,无需额外转换。
    • using块会自动管理OleDbDataReader、OleDbCommand和OleDbConnection的资源释放,不需要在finally中手动调用Close()和Dispose()。
    • 将Null判断放在循环开头,能提前跳过不必要的代码执行,提升运行效率。

内容的提问来源于stack exchange,提问作者GBM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:27:23