SqlException was unhandled by codeuser



我正在构建一个用户注册页面,将用户的信息保存到本地数据库中。但是我得到一个SqlException错误。有人知道我哪里做错了吗?我正在使用ASP.net开发程序,并使用本地数据库服务器。

protected void Page_Load(object sender, EventArgs e)
{
    if(IsPostBack)
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);
        conn.Open();
        string checkUser = "select count(*) from Table where userName = '" + txtUN.Text + "'";
        SqlCommand comm = new SqlCommand(checkUser, conn);
        int temp = Convert.ToInt32(comm.ExecuteScalar().ToString());
        if (temp == 1)
        {
            Response.Write("user already exist");
        }
        conn.Close();
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    try 
    { 
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);
        conn.Open();
        string insertQuery = "insert into Table(UserName, name, Address, e-Mail, IC, phone, password) values(@Uname, @name, @add, @mail, @ic, @phone, @pswrd) ";
        SqlCommand comm = new SqlCommand(insertQuery, conn);
        comm.Parameters.AddWithValue("@Uname", txtUN.Text);
        comm.Parameters.AddWithValue("@name", txtName.Text);
        comm.Parameters.AddWithValue("@add", txtAdd.Text);
        comm.Parameters.AddWithValue("@mail", txtEmail.Text);
        comm.Parameters.AddWithValue("@ic", txtIC.Text);
        comm.Parameters.AddWithValue("@phone", txtPhone.Text);
        comm.Parameters.AddWithValue("@pswrd", txtPsswrd.Text);
        comm.ExecuteNonQuery();
        Response.Redirect("Default.aspx");
        Response.Write("registration was succesful");
        conn.Close();
    }
    catch(Exception ex)
    {
        Response.Write("error"+ex.ToString());
    }
}

你没有给出异常的细节,(即:异常)。Message和exception。innerexception。Message)但是从你的代码中,我认为你有经典的"Syntax Error Near ...."

这是由于查询文本中存在保留关键字造成的。这个保留关键字是TABLE。您可以将它包含在方括号中(或者最好将表的名称更改为更有意义的名称)

  string checkUser = "select count(*) from [Table] where userName = ...";

除此之外,请记住在查找登录等简单任务中也使用始终参数化的查询。最后但并非最不重要的一点是,从安全的角度来看,在数据库中以明文形式存储密码是一个大禁忌。每个使用某种管理工具访问数据库的人都可以看到用户的密码,有人可以拦截用户pc和数据库服务器之间的网络通信,并看到应用程序发送的凭据。所以,请在这个网站上搜索密码散列以找到更安全的方法来解决这个问题

最新更新