在检查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"如果我错过了什么?
您期望查询中具有相同名称的用户数量,因此您应该选择它:
从代码中删除cmd.ExecuteNonQuery();
行,您已经使用了cmd.ExecuteScalar();
,这很好。
您的选择应该返回一个数字,因此您应该选择一个数字:
select COUNT(*) from ref_CourseRegistration_Users where nm_UserName=@nm_UserName
如果你不这样做,你将从查询中获得null,这会导致你端出现null引用异常,因为你没有处理它。