Asp.Net SqlDataReader值在尝试访问和使用时神奇地变为null



我有一个sql命令,它依赖于其他sql命令的结果。这个链中有五个sql命令,但问题出现在第四个。

第5个命令必须将数据保存到归档表中。当它必须运行并从第4个命令中获取completion_date值时,它会抛出一个null引用异常。实际上,它说Reader4[0]不能被读取,因为它有空值。这是错误的,因为它有值,因为在数据库中这些查询工作正常,还因为条件如果(Reader4.HasRows==true)为true,这意味着第4个命令中的WHERE语句为true,其中还包括检查completion_date!这个asp.net怎么了?

Command4 = new SqlCommand("SELECT trade_date FROM Schedule WHERE traider_id=@traiderID AND good_id=@goodID AND position_id=@positionID AND status_id=1 AND completion_date IS NOT NULL", Connection4); //note the completion_date check
Command4.Parameters.Add("@traiderID", Convert.ToInt32(Reader3[0]));
Command4.Parameters.Add("@positionID", CurrentPosition);
Command4.Parameters.Add("@goodID", Convert.ToInt32(Reader1[0]));
Reader4 = Command4.ExecuteReader();
if (Reader4.HasRows == true) //this check is done successfully
{
Command5 = new SqlCommand("INSERT INTO Archive (traider_id, good_id, completion_date) VALUES (@traiderID, @goodID, @completionDate)", Connection5);
Command5.Parameters.Add("@traiderID", Convert.ToInt32(Reader3[0]));
Command5.Parameters.Add("@goodID", Convert.ToInt32(Reader1[0]));
Command5.Parameters.Add("@completionDate", Convert.ToDateTime(Reader4[0])); //Here is the problem
Command5.ExecuteNonQuery();
}
Reader4.Close();

从哪里开始读取reader

你在哪里叫

Reader4.Read();

之后

Reader4 = Command4.ExecuteReader();

最新更新