2017-08-03 74 views
0

我正在開發一個C#項目。我通過使用sql server創建了一個數據集,並試圖在DataGridView表中顯示數據。然後我添加了一個按鈕來更改選定的數據。當我使用英語編輯數據時,它可以很好地工作。但是當我改變語言時,顯示問號。DataGridView中的不同語言

編輯數據我使用以下命令。

sqlStr = "Update Employee Set FirstName = '" + FirstName.Text + "' Where ID = '" + ID.Text + "'"; 
     cmd.CommandText = sqlStr; 
     cmd.Connection = connect; 
     cmd.ExecuteNonQuery(); 

任何幫助表示讚賞。 感謝

+0

你確定你的數據是Unicode嗎?你使用Windows窗體DataGridView嗎? – Michael

+0

是的,我使用波斯語和Windows窗體DataGridView。 – user42037

+0

在波斯語代碼頁上設置了Sql服務器嗎?可能數據不能轉換爲Unicode – Michael

回答

0

變化:

sqlStr = "Update Employee Set FirstName = '" + FirstName.Text + "' Where ID = '" + ID.Text + "'"; 

到:

sqlStr = "Update Employee Set FirstName = N'" + FirstName.Text + "' Where ID = N'" + ID.Text + "'"; 

沒有N在一開始,你正在使用varchar而不是nvarchar。這基本上意味着波斯人將顯示爲?

+0

非常感謝它運作良好 – user42037

0

我認爲你應該使用SqlParameters這樣的:

sqlStr = "Update Employee Set FirstName = @FirstName Where ID = @Id"; 

SqlParameter param = new SqlParameter(); 
param.ParameterName = "@FirstName"; 
param.Value   = FirstName.Text; 
cmd.Parameters.Add(param); 

param = new SqlParameter(); 
param.ParameterName = "@Id"; 
param.Value   = ID.Text; 
cmd.Parameters.Add(param); 

這也避免SQL注入攻擊。