C# 对象在使用数据之前进行处理
我正在努力解决一些System.Data.SqlClient.SqlDataReader问题 实际上,我使执行查询的DatabaseHandler更加方便,使用IDisposable接口来使用语句 当我使用该处理程序读取单个文章时,查询成功执行,但是,该处理程序在我使用数据之前已处理完毕 然后,结果是NullReferenceException。下面是阅读代码的文章,以及Dispose()C# 对象在使用数据之前进行处理,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我正在努力解决一些System.Data.SqlClient.SqlDataReader问题 实际上,我使执行查询的DatabaseHandler更加方便,使用IDisposable接口来使用语句 当我使用该处理程序读取单个文章时,查询成功执行,但是,该处理程序在我使用数据之前已处理完毕 然后,结果是NullReferenceException。下面是阅读代码的文章,以及Dispose() // Article Reading Code using (var ArticleHandler = n
// 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;
}
另外,我检查了列名,它们与数据库信息匹配。在访问读卡器以访问下一行中的数据之前,如果要关闭基础sqlconnection,请检查数据库处理程序内部。如果sqlconnection正在关闭,读卡器将自动关闭。粘贴处理程序执行命令代码,这样我们就可以查看它了为什么要将其设置为null?那么
CurrentArticle
为null无法使用提供的代码诊断该问题。不相关,但如果CurrentConnection是SqlConnection,则需要在dispose()中处理它,而不仅仅是将其设置为null代码>,所以我认为它需要为空。我认为在我使用数据之前,ArticleReader已被处理。啊,我忘了用new
初始化CurrentArticle
。。。。很抱歉(嗯,我多次使用该处理程序,但问题就发生在这里。我刚刚解决了问题。感谢您的回答!问题是什么?当我访问CurrentArticle
时引发了NullReferenceException。我误解了Dispose()
由于调试器的流而出现了此类问题。