我正在努力解决一些 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。我检查了列名,它们与数据库信息匹配。
答案 0 :(得分:0)
如果要在访问读取器以访问下一行中的数据之前关闭底层sqlconnection,请检查数据库处理程序内部。如果sqlconnection关闭,阅读器将自动关闭。粘贴处理程序执行命令代码,以便我们可以查看它