OracleDataReader Read();返回false和System.NullReferenceException

时间:2018-11-20 01:50:15

标签: c# oracle oracle11g odp.net

我已经做了很多次,但是现在我得到一个错误,而且我不知道如何解决。变量不为null,而是有值的。我在数据库中尝试过,一切正常,它返回1行

callApi(url: string): Observable<any> {

    return this.httpClient
        .get(url).pipe(catchError(this.handleError));
}

1 个答案:

答案 0 :(得分:0)

这是您的问题-阅读评论

 while (lector.Read())
 {
      // if you never come here, your reader is closed
 }
 lector.Close(); // <-- problem here

Oracle:

  

通过调用OracleCommand对象的ExecuteReader方法来构造OracleDataReader实例。 关闭或已处置DataReader后,只能访问IsClosed和RecordsAffected

此行lector.Read()不能引发空引用异常,因为在该行lector = orden.ExecuteReader();之前的行将始终返回阅读器。如果没有行,它将被关闭。

您的代码没有被很好地感染。应该是

using (conn = new connection/getconnection)
{
    using (cmd = new command)
    { 
        using (reader = cmd.ExecuteReader)
        {
        } // no need to explicitly dispose/close here
    }
}