2014-10-11 51 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