c# - 在 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() ?谢谢。
解决方案
我想这个建议很清楚:
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
处)。
推荐阅读
- assembly - 从引导加载程序进入保护模式时出现问题
- css - 带有 XML 文件加载的 ASP 菜单控件太慢
- reactjs - 如何在 react、material-ui 中以表单形式上传文件的 obSubmit 和 onChange 事件?
- exi - 找不到将 EXI 压缩作为有效负载的 http 客户端/服务器的代码示例
- excel - 使用 Control + 箭头键从 ComboBox 失去焦点 [Excel]
- php - www 不工作但非 www 工作的 laravel 路线
- xforms - XForms 2.0 自定义属性
- ios - 关闭 ViewControllers 以返回之前的 ViewController
- php - 将邮件移动到收件箱文件夹
- google-apps-script - 当另一个单元格包含特定值时清除单元格的值