在检查DB表中的值时,对象引用未设置为对象错误的实例

本文关键字:设置 对象 实例 错误 对象引用 DB 检查 | 更新日期: 2023-09-27 18:00:40

当用户在注册页面中输入用户名时,我正在从DB表中检查用户名,触发一个文本框OnTextChanged事件,检查用户名是否已经存在。这是代码:

public void HandleTextbox1OnTextChanged(Object sender, EventArgs e)
{
    string _connString = ConfigurationManager.AppSettings["connString"];
    string username = txtUserName.Text;
    int result = 0;
    using (SqlConnection conn = new SqlConnection(_connString))
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand("select * from  ref_CourseRegistration_Users where nm_UserName=@nm_UserName", conn);
        cmd.Parameters.AddWithValue("@nm_UserName", username);
        cmd.ExecuteNonQuery();
        result = (int)cmd.ExecuteScalar();
        if (result > 0)
        {
            lblMessage.Text = "username already exists, please enter different User Name!";
            lblMessage.ForeColor = Color.Red;
        }
        else
        {
        }
    }
}

当username存在时,它工作正常,但当username不存在时,会显示一个错误"Object reference not set to a instance of a Object"如果我错过了什么?

在检查DB表中的值时,对象引用未设置为对象错误的实例

您期望查询中具有相同名称的用户数量,因此您应该选择它:

从代码中删除cmd.ExecuteNonQuery();行,您已经使用了cmd.ExecuteScalar();,这很好。

您的选择应该返回一个数字,因此您应该选择一个数字:

select COUNT(*) from  ref_CourseRegistration_Users where nm_UserName=@nm_UserName

如果你不这样做,你将从查询中获得null,这会导致你端出现null引用异常,因为你没有处理它。