Asp.net &引用;对象引用未设置为对象的实例;在没有返回数据时引发
我收到代码中的“对象引用未设置为对象实例”错误。我相信我理解为什么会发生这种情况,但我不知道如何避免它。这是我的密码:Asp.net &引用;对象引用未设置为对象的实例;在没有返回数据时引发,asp.net,sql-server,ado.net,sql-server-2008-r2,webforms,Asp.net,Sql Server,Ado.net,Sql Server 2008 R2,Webforms,我收到代码中的“对象引用未设置为对象实例”错误。我相信我理解为什么会发生这种情况,但我不知道如何避免它。这是我的密码: public string GetLastPost(int subCatId) { SqlConnection conn = null; string postDate = null; try { conn = new SqlConnection(); conn.ConnectionString = Configu
public string GetLastPost(int subCatId)
{
SqlConnection conn = null;
string postDate = null;
try
{
conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "forum_GetLastPostDate";
cmd.Parameters.Add("@SubCategoryId" , subCatId);
postDate = cmd.ExecuteScalar().ToString();
}
这是我的SQL查询:
SELECT TOP 1 PostDate
FROM forum_posts
WHERE forum_posts.SubcategoryId = @SubCategoryId
ORDER BY PostId desc
此行引发错误:
postDate = cmd.ExecuteScalar().ToString();
在调试时,我注意到只有当SQL查询不返回任何内容时才会发生这种情况。此方法运行多次,第一次运行时会正确运行,因为它返回一个项。但是第二次,因为它没有要返回的项,它抛出了我提到的错误
如何解决这个问题?您可以这样使用
var data= cmd.ExecuteScalar();
if(data!=null)
postDate =data.ToString();
细部
您可以这样使用
var data= cmd.ExecuteScalar();
if(data!=null)
postDate =data.ToString();
细部
这将解决您的问题。。。替换
postDate=cmd.ExecuteScalar().ToString()代码>带有
object postdate = cmd.ExecuteScalar();
if (postdate != null)
{
string getUserName = postdate.ToString();
}
这会解决你的问题。。。替换postDate=cmd.ExecuteScalar().ToString()代码>带有
object postdate = cmd.ExecuteScalar();
if (postdate != null)
{
string getUserName = postdate.ToString();
}
删除ExecuteScalar()
上的ToString()
,并检查是否返回空值。(首先将其放置在对象上)。删除ExecuteScalar()
上的ToString()
的可能重复项,并检查是否返回空值。(将其首先放置在对象上)。可能重复的