2015-11-18 32 views
0
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ebookConnectionString"].ConnectionString); 
con.Open(); 

string insert = "insert into ebook(Name,Email,Passeword,Mobile No.)values (@name,@email,@password,@dob,@mobile no.))"; 

SqlCommand cmd = new SqlCommand(insert, con); 
cmd.Parameters.AddWithValue("@name", TextBox1.Text); 
cmd.Parameters.AddWithValue("@email", TextBox2.Text); 
cmd.Parameters.AddWithValue("@password", TextBox3.Text); 
cmd.Parameters.AddWithValue("@dob", TextBox6.Text); 
cmd.Parameters.AddWithValue("@mobile no.", TextBox5.Text); 

int rd = cmd.ExecuteNonQuery(); 
Response.Redirect("manger.aspx"); 

con.Close(); 
+0

你的列名不應該有句點。空格(如marc下面所述)是允許的,但要求您跳過列名。 –

+0

我當然希望那些不是真正的文本框名稱,但是我的感覺很糟糕。啊!! –

回答

5

你不能有像「移動號碼」這樣的參數名稱。 - 沒有空格,沒有像點等特殊字符 - 使用@MobileNo來代替。

如果你有特殊字符和空格的SQL Server列 - 你必須將它們用方括號[Mobile No.]

因此,使用這樣的:

string insert = "insert into ebook(Name, Email, Passeword, [Mobile No.]) " + 
       "values (@name, @email, @password, @dob, @mobileno)"; 
..... 
cmd.Parameters.AddWithValue("@mobileno", TextBox5.Text); 

此外,檢查了這一點,並避免使用.AddWithValue()

Can we stop using AddWithValue() already?並停止使用.AddWithValue() - 它可能會導致意外和令人驚訝的結果...

0

雖然這與您的問題無關,並且@「marc_s」已經解釋過參數名稱不應該有中間空格 - 這是正確的,我投票支持但我想在其中強調一些其他必需的修改碼。關閉SqlConnection並且只有在重定向你的頁面之後,否則con.Close();將永遠不會執行。

con.Close(); 
Response.Redirect("manger.aspx"); 
相關問題