我有一个返回三个整数的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)
答案 0 :(得分:4)
我会尝试通过索引而不是列名来访问,以防您传递的是不存在的列名。
此外,请确保使用使用区块包装阅读器,所以即使有例外,您的阅读器也会被正确关闭和处理,例如以这种方式:
...
using(var reader = comm.ExecuteReader())
{
if (reader.Read())
{
shoppingCartHeadID = Convert.ToInt32(reader[0]);
if (!reader.IsDBNull(1))
{
billID = Convert.ToInt32(reader[1]);
}
if (!reader.IsDBNull(2))
{
delID = Convert.ToInt32(reader[2]);
}
}
}
答案 1 :(得分:0)
使用GetXXXX(colIndex)
方法。
if (!reader.IsDBNull(0)) // I presume that billid at 0 ordinal
{
billID = reader.GetInt32(0);
}
if (!reader.IsDBNull(1)) // I presume that delId at 1 ordinal
{
delID = reader.GetInt32(1);
}