2012-11-25 31 views
2

我发现这个奇怪的,我有这样的代码:查询抛出“IndexOutOfRange”

string getBatchesQuery = "SELECT DISTINCT CONVERT(VARCHAR(8), time, 4) AS Batch FROM Calls ORDER BY Batch"; 
SqlCommand getBatchesQueryCom = new SqlCommand(getBatchesQuery, connection); 

SqlDataReader getBatchesQueryReader = myCom.ExecuteReader(); 

List<string> allBatches = new List<string>(); 

while (getBatchesQueryReader.Read()) 
{ 

    allBatches.Add(getBatchesQueryReader["Batch"].ToString()); 

} 
getBatchesQueryReader.Close(); 

现在怎么可能是Batch不存在?也许是因为我是这样命名的?

我该怎么办?

+0

可以在设置在'allBatches.Add断点(getBatchesQueryReader [ “批量”]的ToString());'看看做它抛出一个异常,也许它可能是什么值'NULL'。 –

+0

您的阅读器只有一列。为什么你不使用getBatchesQueryReader [0] –

回答

2

该列不存在,因为您正在运行错误的命令。将myCom更改为getBatchesQueryCom

SqlDataReader getBatchesQueryReader = getBatchesQueryCom.ExecuteReader(); 
+0

会有另一个例外。我认为这简单拼写错误简化我们的代码 –

+2

我不是旁边的代码来检查,但我认为这是问题,并没有它不是简化基里尔,我只是一个普通的白痴。 –