首页 > 解决方案 > 在 C# 中的 OracleDataReader 中创建变量

问题描述

有人建议我不必继续写作

博士[“building_id”].ToString()

在下面的代码中。我只需要将上面的内容放入一个变量,即sBldgID,然后使用后者。

...
using (OracleCommand cmd = new OracleCommand(sql, conn)) {
   cmd.CommandType = CommandType.Text;
   using (OracleDataReader dr = cmd.ExecuteReader()) {
      while (dr.Read()) {
         if (dr["building_id"].ToString() != " " && dr["building_id"].ToString() != "" && dr["building_id"].ToString() != null) {
            using (SpreadsheetDocument document = SpreadsheetDocument.Open(path, true)) {
               IEnumerable<Sheet> sheets = document.WorkbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == dr["building_id"].ToString());
               WorksheetPart worksheetPart = (WorksheetPart)document.WorkbookPart.GetPartById(sheets.FirstOrDefault().Id);

...
            }
         }
      }
   }
}
...

好建议。我该怎么做?在 while 循环开始之前如何使用 dr.Read() ?谢谢。

标签: c#sql

解决方案


我想这个建议很清楚:

using (OracleCommand cmd = new OracleCommand(sql, conn)) {
   cmd.CommandType = CommandType.Text;
   using (OracleDataReader dr = cmd.ExecuteReader()) {
      while (dr.Read()) {

         string buildingId = dr["building_id"].ToString(); // <-- chache building id

         if (buildingId != " " && buildingId != "" && buildingId != null) {
            using (SpreadsheetDocument document = SpreadsheetDocument.Open(path, true)) {
               IEnumerable<Sheet> sheets = document.WorkbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == buildingId);
               WorksheetPart worksheetPart = (WorksheetPart)document.WorkbookPart.GetPartById(sheets.FirstOrDefault().Id);

...
            }
         }
      }
   }
}

只需dr["building_id"].ToString()在局部变量中查找(如此building_id处)。


推荐阅读