【发布时间】:2016-12-15 19:39:01
【问题描述】:
我基本上有一个生成项目列表(第 1 列)及其描述(第 2 列)的查询。有 3 个不同的项目(共 170 个)没有描述,所以我硬编码了我的程序来调整这 3 个项目。但是,每当我的读者到达第一个具有空列的项目时,读者甚至无法阅读该项目。相反,它说“枚举没有结果”
var reader = command.ExecuteReader();
while (reader.Read())
{
var node = reader[0] as string;
string fullNodeName = string.Empty;
if (string.IsNullOrEmpty((string)reader[1]))
{
switch ((string)reader[0])
{
case "xxx":
fullNodeName = "jhhfgnfh";
break;
case "xxx":
fullNodeName = "fhnfgndfgdh";
break;
case "xxx":
fullNodeName = "werqrqwerq";
break;
}
}
else
{
fullNodeName = reader[1] as string;
}
_nodeTokenList.Add(new Carriers.NodeToken(node, string.Format("{0} - {1}", node, fullNodeName)));
}
数据看起来像
Node Description
XXX || YYYYYYY YYY YYY
XXX || YYYYYYY YYY YYY
XXX || YYYYYYY YYY YYY
XXX || YYYYYYY YYY YYY
XXX ||
XXX || YYYYYYY YYY YYY
描述字段为空的行是程序开始运行的时间。奇怪的是它进入了这一行的while循环,但是在 var node = reader[0] as string; 处捕获了异常。 (不为空的字段)
【问题讨论】:
-
提问时请多注意代码格式。您的大部分代码都缩进了数英里,使其更难阅读。在发布之前,请务必仔细阅读您将要发布的内容,并问问自己它的格式是否符合您在尝试回答时想要阅读的方式。
-
谢谢,会记住的
-
“Enumeration Yielded No Results”听起来像是调试器消息。当你实际运行代码时会发生什么?
-
它捕获所有成员,直到具有空字段的行然后它抛出异常“无法将'System.DBNull'类型的对象转换为'System.String'类型。”}。 ..当我检查变量时,没有结果是存储在阅读器中的
-
在转换为字符串之前必须检查 DBNull
标签: c# sql oracle sqldatareader