簡體   English   中英

C#在空引用上停止

[英]C# stop on null reference

在我的程序登錄過程中,我在admin表中檢查用戶的存在

如果它們在管理表中不存在,我希望程序停止執行其余的登錄序列,並在登錄屏幕上更新標簽文本以顯示為什么他們無法登錄等。

目前,標簽不隨文本更新,這取決於在更改文本之前刷新頁面。

登錄期間還會發生其他檢查,這些檢查可能會阻止他們登錄。

在這種情況下,最好的方法是根據某些檢查來確保每次可以顯示不同的標簽文本?

謝謝你的幫助

try
{
    conn.Open();
    string checkAdmin = "Select Username from Admins where Username= '" + Session["Username"] + "'";

    SqlCommand adminCheck = new SqlCommand(checkAdmin, conn);
    string admin = adminCheck.ExecuteScalar().ToString();
    conn.Close();
    Session["Admin"] = admin;
}
catch (NullReferenceException)
{

    Session.Abandon();
    Response.Redirect(Request.RawUrl);
    Label3.Text = "blablabla"
}

編輯

好的,我現在根據您的評論對其進行了更新。

                try
            {

                string checkAdmin = "Select Username from Admins where Username= @User";
                conn.Open();
                SqlCommand adminCheck = new SqlCommand(checkAdmin, conn);
                adminCheck.Parameters.AddWithValue("@User", Session["Username"]);
                var admin = adminCheck.ExecuteScalar();
                conn.Close();
                if (admin != null)
                {
                    Session["Admin"] = admin;


                }

                else 
                {
                    Session["Admin"] = null;
                }

            }
            catch (Exception)
            {

            }
 Response.Redirect(Request.RawUrl); 

這將立即取消當前代碼的執行,並傳輸到該URL(可能是其他一些代碼)。 因此,以下用於更改標簽的語句將不會執行。

文檔 (“備注”部分):

重定向調用End ,它在完成時引發ThreadAbortException異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM