使用 C# 对 SQLDataReader 值进行 System.IndexOutOfRangeException
我有一个返回三个整数的 SQLDataReader。但是,有时两个整数将返回空值。
为了解决这个问题,我写了以下内容:
int shoppingCartHeadID = 0;
int billID = 0;
int delID = 0;
conn.Open();
reader = comm.ExecuteReader();
if (reader.Read())
{
shoppingCartHeadID = Convert.ToInt32(reader["shoppingCartHeadID"]);
if (!reader.IsDBNull(billID))
{
billID = Convert.ToInt32(reader["billID"]);
}
if (!reader.IsDBNull(delID))
{
delID = Convert.ToInt32(reader["delID"]);
}
}
reader.Close();
不幸的是,我仍然收到错误消息。有什么建议吗?
PS我也尝试过这个但没有运气
if (reader["billID"] != null)
I have a SQLDataReader that returns three integers. However, there are occasions when two of the integers will return null values.
To get round this I wrote the following:
int shoppingCartHeadID = 0;
int billID = 0;
int delID = 0;
conn.Open();
reader = comm.ExecuteReader();
if (reader.Read())
{
shoppingCartHeadID = Convert.ToInt32(reader["shoppingCartHeadID"]);
if (!reader.IsDBNull(billID))
{
billID = Convert.ToInt32(reader["billID"]);
}
if (!reader.IsDBNull(delID))
{
delID = Convert.ToInt32(reader["delID"]);
}
}
reader.Close();
Unfortunately I'm still getting the error message. Any suggestions?
PS I also tried this with no luck
if (reader["billID"] != null)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我会尝试通过索引而不是列名进行访问,以防万一您传递不存在的列名。
另外,请确保使用 using 块包装您的阅读器,这样在任何情况下,即使出现异常,您的阅读器也将被正确关闭和处置,例如以这种方式:
I would try to access by index instead of column name, just in case you are passing a not existing column name.
Also, make sure you wrap your reader with a using block so in any case even if there is an exception your reader will be properly closed and disposed, for example in this way:
使用
GetXXXX(colIndex)
方法。Use
GetXXXX(colIndex)
method.