2017-04-24 45 views
1

我在sql服務器中插入馬來西亞/韓國/ Japaneese語言,我能夠成功保存它,但是如果任何單詞有單引號(撇號),我的代碼就會被破壞。我嘗試了下面的方式,但無法保存它。如何在sql server中用不同的語言保存單引號

  • 我使用SQL Server 2014
  • 我的救命字(地址1)是:早 '上好
  • 我的救命字(地址2)是:早上好'

SQL查詢是以下

"Insert into Employee (CountryCode, Address1, Address2)values('" + Program.CountryCode + "',N'" + Address1.Text + "',N'" + Address2.Text) 

在調試過程中,我的查詢變成了如下的數據。

Insert into Employee (CountryCode, Address1, Address2)values('JP',N'早'上好',N'早上好'') 
+6

不要連接字符串來創建您的SQL,這會讓您的代碼潛在地容易受到SQL注入攻擊!改用SQL參數(也可以插入引號)。 – bassfader

+3

請參閱https://msdn.microsoft.com/en-us/library/bb738521(v=vs.100).aspx –

+0

您是插入馬來西亞/韓國/日本人,而不是中國人? –

回答

-1

首先感謝你這麼多的所有人的尊重意見,導致我走向妥善的解決辦法,我寫我是如何解決。

string add1 = txtAdd1.Text; 
string add2 = txtAdd2.Text; 
if(!add1.Contains(";")) 
{ 
    if(string.isNullOrEmpty(add1) && add1.Contains("'")) 
    { 
     add1 = add1.Replace("'", "''"); 
    } 
} 
if(!add2.Contains(";")) 
{ 
    if(string.isNullOrEmpty(add2) && add2.Contains("'")) 
    { 
     add2 = add2.Replace("'", "''"); 
    } 
} 

我把add1和add2傳入查詢如下。

Insert into Employee (CountryCode, Address1, Address2)values('" + Program.CountryCode + "',N'" + add1 + "',N'" + add2) 
+2

構建您自己的查詢文本,而不是使用參數(也在註釋中提到)來提供值,是*不是「適當的」解決方案。閱讀「sql注入」。 –

+0

嗨漢斯, 那麼我該如何傳遞值作爲參數? –

+0

嗨漢斯, 我得到的解決方案,我應該檢查分號以及它不會成爲一個新的查詢在執行過程中。 –

-1

用2個單引號替換單引號['']。這將解決您的問題,並用數據插入單引號,但字段應爲nvarchar代替varchar

數據「在地方數據的」的

+0

親愛的Yash, 字段已經是nvarchar,我可以保存任何語言沒有單引號。代碼失敗,如果我把單引號。 –

+0

不,不要使用你自己的逃跑(這可能會失敗,你還沒有想過的事情)。使用參數來提供值,那麼你更安全。 –

相關問題