0

这是我现在的代码:

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,但这也引发了异常。

你们能看到我在这里做错了吗?

谢谢!

4

1 回答 1

0

大卫 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));
}
于 2012-08-29T14:49:35.777 回答