2013-03-22 187 views
3

我有where子句,但該字符串包含引號字符的字符串(')字符串包含引號字符( ')

例子:

SELECT * FROM CsCustomer WHERE Name ='SA'MIR LUBIS' 

,我從SQL Server出現錯誤。有什麼建議麼?

我用它來顯示結果爲表單元格SA''MIR LUBIS ' '你的文字

SELECT * FROM CsCustomer其中name =內部

c = new TableCell(); 
c.Text = Db.SingleString("SELECT Unit FROM cscustomer WHERE Name='"+ r.Name +"'"); 
tr.Cells.Add(c); 

回答

1

使用雙引號(')'

+0

的OP不希望一個報價 - 要加倍'''起來,而不是報價。 – LukeHennerley 2013-03-22 10:10:30

9

您應該使用參數化查詢。您可以逃避查詢'單引號(另一個單引號)

既然問題已經標記爲C#,如果您使用的級聯,那麼你一定會得到這樣的錯誤建立查詢。它的更好,如果你使用SqlParameter 喜歡的東西:

SqlCommand cmd = new SqlCommand("SELECT * FROM CsCustomer WHERE Name [email protected]"); 
cmd.Parameters.Add("@pName", "SA'MIR LUBIS"); //or any GUI control 

這也將節省您從SQL Injection

+0

我想將結果顯示在表格單元格/文本框中。我怎麼能做到這一點? – 2013-03-22 10:25:45

+2

@FirmaAgnes去找出,SO的想法是幫助一個特定的問題不完成你的整個任務 – LukeHennerley 2013-03-22 10:28:20

+0

@FirmaAgnes,這是一個單獨的問題。它也取決於你的目標是什麼類型的應用程序,但通常你可以使用'DataGrid'並綁定來自數據庫的數據。如果你被困在某個地方,你需要搜索它並回到SO,可能這可能是一個很好的起點http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=111 – Habib 2013-03-22 10:36:04

0

這樣使用它:

"SELECT * FROM CsCustomer WHERE Name =\'SA\'MIR LUBIS\'" 

或者:

@"SELECT * FROM CsCustomer WHERE Name ='SA'MIR LUBIS'" 
2

如果他們不應該在那裏,你需要把他們加倍或者刪除他們。

SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS' 
2

看看在SqlParameter類。這樣做:

var command = new SqlCommand("SELECT * FROM CsCustomer WHERE Name = @name"); 
command.Parameters.Add("@name", "SA'MIR LUBIS"); 
1

你只需要簡單地逃避單引號,像這樣:

SELECT * FROM CsCustomer WHERE Name ='SA''MIR LUBIS'