使用数据之前的对象处置

时间:2016-11-22 13:39:11

标签: c# asp.net sql-server

我正在努力解决一些 System.Data.SqlClient.SqlDataReader 问题。

实际上,我为执行查询创建了一个DatabaseHandler,使用IDisposable接口来使用语句。

当我使用处理程序读取单篇文章时,查询已成功执行,但是,在我使用数据之前处理了处理程序。

然后,结果是 NullReferenceException 。这是文章阅读代码, Dispose()

// Article Reading Code
using (var ArticleHandler = new DatabaseHandler())
{
    var ArticleReader = ArticleHandler.ExecuteCommand("ARTICLE_INQUIRY",
        DatabaseHandler.QueryType.ExecuteReader,
        new DatabaseParameter[]
        {
            new DatabaseParameter("seq", Sequence)
        }) as System.Data.SqlClient.SqlDataReader; //Query Successful

    if (!ArticleReader.HasRows)
    {
        Response.Redirect("/articles/list.aspx");
    }
    else
    {
        ArticleReader.Read(); //Data Read Successful

        CurrentArticle.title = (string)ArticleReader["title"]; //NullReferenceException ?
        CurrentArticle.category = (string)ArticleReader["category"];
        CurrentArticle.datetime = (string)ArticleReader["written_datetime"];
        CurrentArticle.content = (string)ArticleReader["content"];
    }
}


/* Database Handler Dispose() */
public void Dispose()
{
    CurrentConnection = null;
}

P.S。我检查了列名,它们与数据库信息匹配。

1 个答案:

答案 0 :(得分:0)

如果要在访问读取器以访问下一行中的数据之前关闭底层sqlconnection,请检查数据库处理程序内部。如果sqlconnection关闭,阅读器将自动关闭。粘贴处理程序执行命令代码,以便我们可以查看它