2014-10-11 49 views
0

我想從我的ASP.NET Web應用程序插入數據到SQL Server數據庫表(我以前創建)。我的代碼似乎沒有工作,顯示錯誤消息,並且實際數據似乎不會保存到數據庫。爲什麼這個特定的INSERT語句失敗?

var conn = new SqlConnection("Data Source=SHRIYA\\SQLEXPRESS;Initial Catalog=…;Integrated Security=True"); 

var insert = new SqlCommand("Insert Into tblRegister(GenerateID,Name,Surname,ID_Number,Gender,Address,Postal_code,Phone_Number,Email,Password) values(@GenerateID,@Name,@Surname,@ID_Number,@Gender,@Address,@Postal_code,@Phone_Number,@Email,@Password", conn); 
insert.Parameters.AddWithValue("@GenerteID",lstuserID.SelectedIndex); 
insert.Parameters.AddWithValue("@Name", txtname.Text); 
insert.Parameters.AddWithValue("@Surname", txtsurname.Text); 
insert.Parameters.AddWithValue("ID_Number", txtid.Text); 
insert.Parameters.AddWithValue("@Gender", ddlgender.SelectedItem); 
insert.Parameters.AddWithValue("@Address", txtaddress.Text); 
insert.Parameters.AddWithValue("@Postal_code", txtpostalcode.Text); 
insert.Parameters.AddWithValue("@Phone_Number", txttele.Text); 
insert.Parameters.AddWithValue("@Email", txtEmail.Text); 
insert.Parameters.AddWithValue("@Password", txtpassword); 

try 
{ 
    conn.Open(); 
    insert.ExecuteNonQuery(); 
} 
catch (Exception) 
{ 
    ScriptManager.RegisterStartupScript(this, GetType(), "error", "alert('Error When Saving');", true); 
} 
conn.Close(); 
+2

什麼是錯誤訊息? – Shaharyar 2014-10-11 06:57:29

+0

你應該看看[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/)並停止使用'.AddWithValue()' - 它可能會導致意想不到的和令人驚訝的結果... – 2014-10-11 07:32:06

+0

@ShriyaBramdeo:您是否考慮過將密碼('@ Password')作爲純文本存儲的含義?請花一分鐘閱讀:[**「您可能存儲密碼錯誤」**](http://blog.codinghorror.com/youre-probably-storing-passwords-incorrectly/);也許是這樣的:[「讓我們來談談密碼存儲」](http://blog.mozilla.org/webdev/2012/06/08/lets-talk-about-password-storage/)。 – stakx 2014-10-11 07:55:22

回答

1
  1. 一個錯誤是使用txtpassword(即UI控制作爲一個整體),作爲一個SqlParameter的值。與txtpassword.Text更換(即進入UI控件的文本值):

    insert.Parameters.AddWithValue("@Password", txtpassword.Text); 
    
  2. 你的SQL命令文本缺少右括號)VALUES (

    SqlCommand insert = new SqlCommand("Insert Into 
    tblRegister(GenerateID,Name,Surname,ID_Number,Gender,Address, 
    Postal_code,Phone_Number,Email,Password) 
    values(@GenerateID,@Name,@Surname,@ID_Number,@Gender,@Address, 
    @Postal_code,@Phone_Number,@Email,@Password)", conn); 
    //          ^
    
+0

我試過了,它仍然不保存到SQL服務器。我的SQL Server可能有問題嗎? – 2014-10-11 14:03:34

+0

任何錯誤您正在獲取 – 2014-10-11 14:07:37

+0

如果數據無法保存,則設置的錯誤消息。 – 2014-10-11 14:20:40

0
SqlCommand insert = new SqlCommand("Insert Into tblRegister(GenerateID,Name,Surname,ID_Number,Gender,Address,Postal_code,Phone_Number,Email,Password) values(@GenerateID,@Name,@Surname,@ID_Number,@Gender,@Address,@Postal_code,@Phone_Number,@Email,@Password", conn); 

SQL語法錯誤。

在最後一個參數@Password處缺少)

SqlCommand insert = new SqlCommand("Insert Into tblRegister(GenerateID,Name,Surname,ID_Number,Gender,Address,Postal_code,Phone_Number,Email,Password) values(@GenerateID,@Name,@Surname,@ID_Number,@Gender,@Address,@Postal_code,@Phone_Number,@Email,@Password)", conn); 
+0

我認爲它似乎還沒有插入將數據導入SQL表 – 2014-10-11 14:30:30

1
insert.Parameters.AddWithValue("ID_Number", txtid.Text); 

這應該是

insert.Parameters.AddWithValue("@ID_Number", txtid.Text); 
+1

其他人已經指出了其他錯誤 – 2014-10-11 08:09:08