コードで「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。私はこれがなぜ起こるのか理解していると思いますが、それを回避する方法がわかりません。これが私のコードです:
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クエリが何も返さない場合にのみこれが発生することに気付きました。このメソッドは複数回実行されますが、最初に実行すると、アイテムが返されるため、正しく実行されます。しかし、2回目は、返すアイテムがないため、前述のエラーがスローされます。
どうすればこの問題を解決できますか?