2012-07-11 9 views
0

如何添加一個類型爲字符串的列(在SQL Server中)爲「[email protected]」這樣的字符串的表格中,我有特殊字符(「@」在這種情況下)的問題.Thanks通過C#ASP.NET應用程序在SQL Server數據庫中添加特殊字符的字符串

System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(
         "Data Source=BOGDAN-PC\\BOGDAN;Initial Catalog=ePlanning;Integrated Security=SSPI;Connect Timeout=10;TrustServerCertificate=True "); 
       string[] id_dep = ddDepartament.SelectedItem.Text.Split('.'); 
       con.Open(); 



       string final = tbemailangajat.Text. 

       string sqlstring = " Update angajati set nume='" + tbNumeangajat.Text + "' ,prenume= '" + tbPrenumeangajat.Text + "',email= '" + final + "',telefon= '" + tbTelefonAngajat.Text + "',id_functie= " + ddFunctieAngajat.SelectedItem.Text[0].ToString() + ",id_departament= " + ddDepartament.SelectedItem.Text[0].ToString() + " where id_angajat = " + int.Parse(tbID.Text) + ";"; 
       System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand(sqlstring, con); 
       // System.Data.SqlClient.SqlDataReader reader; 
       comm.ExecuteNonQuery(); 
       con.Close(); 
+0

爲nvarchar(100)應該工作 – Esen 2012-07-11 17:00:37

+0

參數多態查詢 – 2012-07-11 17:01:46

+3

到底是什麼問題了嗎? – 2012-07-11 17:02:10

回答

2

不使用sql注入,而是使用參數化查詢。

command.CommandText = "insert into table (column) values(@p1)"; 
command.Parameters.AddWithValue("p1", "[email protected]"); 
+0

謝謝,它的工作! – TBogdan 2012-07-11 17:23:38

0

VARCHAR應該允許@符號,但對於一些符號它需要nvarchar的,而不是爲varchar。 nvarchar存儲unicode,用於支持ASCII範圍之外的符號。

+0

所以我不得不放棄我的桌子並重新構建它,這是現在唯一的方法嗎? – TBogdan 2012-07-11 17:13:58

+0

如果您要支持國際角色,您可能需要重新創建表格(或設置選項讓管理員爲您完成)。我同意參數化你的查詢是最好的,但看着你的查詢,它應該允許你插入@符號。 – 2012-07-11 17:18:55

+0

當您在Management Studio中更改字段類型時,允許該工具重新創建表的選項是Tools> Options> Designers,然後取消選中以下選項「Prevent保存需要重新創建表的更改」 – 2012-07-11 17:21:57