2015-09-20 95 views
-2

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

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()); 
    } 
} 
+0

哪里引发异常? Page_Load或Button_Click? – Steve

+0

在VS中,您可以查看异常的详细信息。这可能会给你提示发生了什么。如果不是,请将异常详细信息复制到此帖子。可以帮助其他人提供答案。 – Ladi

+1

请***不要***在您的数据库表中以**明文**存储密码!这只是要求被黑客攻击和暴露.... –

回答

1

你不给的异常的详细信息,(即:exception.Message和exception.InnerException.Message),但是从你的代码,我认为你有古典"Syntax Error Near ...."

这是造成在查询文本中存在保留关键字。该保留关键字是TABLE。你可以解决它封闭的话在方括号(或更好更改表的名称somenthing更有意义)

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

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

+0

你是正确的关于我的例外的细节。抱歉没有解释更多细节。然而你解决我的问题,谢谢Steve – jenan

+3

@jenanI如果这个答案帮助你解决了你的问题,那么请[**接受这个答案**](http://meta.stackoverflow.com/q/5234/153998)。这将表明你对那些花时间帮助你的人表示感谢。 –

相关问题