如何在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()); } } }
关键说明
continue的作用:在dr.IsDBNull(1)的判断分支中加入continue,会直接跳过当前记录的后续处理逻辑,进入下一次dr.Read()读取下一条数据,完美适配DataReader仅向前的特性。- 代码优化点:
dr.GetString(0).ToString()是冗余操作,GetString方法本身就返回string类型,无需额外转换。using块会自动管理OleDbDataReader、OleDbCommand和OleDbConnection的资源释放,不需要在finally中手动调用Close()和Dispose()。- 将Null判断放在循环开头,能提前跳过不必要的代码执行,提升运行效率。
内容的提问来源于stack exchange,提问作者GBM
相关产品推荐
相关产品推荐

