我正在使用ASP.net和C#创建网站注册表单。我在家里[不同的计算机]创建了一个小的sqlcommand来选择表中的用户名并将它们与给定的用户名进行匹配,但是我得到了一个错误。
错误
Error123:System.NullReferenceException:未将对象引用设置为对象的实例。 at index:Page_Load(Object sender,EventArgs e)在e:\ Year 2 \ Internet App Development \ Assignment 2 \ assignment 2 \ account.aspx.cs:line 18Error:System.NullReferenceException:对象引用未设置为an的实例宾语。 at index中的index.submitButton_Click(Object sender,EventArgs e)\ Internet App Development \ Assignment 2 \ assignment 2 \ account.aspx.cs:第41行
守则:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
try
{
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
connection.Open();
string checkuser = "select count(*) from userTable where Username='" + userValBox.Text + "'";
SqlCommand com = new SqlCommand(checkuser, connection);
int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
if (temp == 1)
{
Response.Write("Username already exists");
}
connection.Close();
}
catch(Exception ex)
{
Response.Write("Error123: " + ex.ToString());
}
}
}
很抱歉这是一个重复的问题,我搜索了其他人并且没有发现任何问题。提前谢谢!
答案 0 :(得分:0)
连接字符串的名称与web.config中的连接字符串不匹配。
改变这个:
ConfigurationManager.ConnectionStrings["RegistrationConnectionString"]
要:
ConfigurationManager.ConnectionStrings["ConnectionString"]
另外,你应该改变它,因为它可能会变坏:
com.ExecuteScalar().ToString()
你应该试试这个:
obj result = com.ExecuteScalar();
if (result != null)
{
int count = Convert.ToInt32(result);
}
或者简单地说:
int count = Convert.ToInt32(com.ExecuteScalar());
答案 1 :(得分:0)
“System.NullReferenceException”的原因是com.executescalar中可能存在null值