以下是我的代码:
OleDbCommand cmd1 = new OleDbCommand("SELECT * FROM Id, Number", cn);
OleDbDataReader reader = cmd1.ExecuteReader();
while( reader.Read() )
{
results.Add((int)reader["Id"], (int)reader["Number"]);
}
Id和Number是我的excel文件中的命名范围。我正在尝试使用此查询的结果返回dictionary<int, int>
。
问题是,行reader["Id"]
正在抛出异常。当我调试结果集时,我可以看到它具有Id的正确值。我是否错误地检索数据?
加分:我还需要只返回Number不为空的行。我希望我可以将where Number is not null
添加到OldDbCommand,但这也引发了异常。
你们可以看到我在这里做错了吗?
谢谢!
答案 0 :(得分:0)
David W的评论是正确的。我无法投入相同的路线。此外,调用reader["Id"]
无效。替换为Reader[0]
,一切都很好。
OleDbCommand cmd1 = new OleDbCommand("SELECT * from Number, Id", cn);
OleDbDataReader reader = cmd1.ExecuteReader();
while( reader.Read() )
{
var Number= reader[0];
var Id = reader[1];
if(Id == DBNull.Value || WoNumber == DBNull.Value)
{
break;
}
results.Add(Convert.ToInt32(Id), Convert.ToInt32(Number));
}