2015-09-20 96 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)。這將表明你對那些花時間幫助你的人表示感謝。 –

相關問題