2011-07-19 34 views

回答

2

放一個反斜槓在它面前就像這樣:

"Baby\'s world" 

你可以找到並使用替代它們在你的字符串以下:

str.Replace('\'', '\\\'') 

我不是100%肯定這最後一部分,但你需要「逃跑」的'和\加在它前面的\。因此,它似乎好了(不能測試,因爲我不是一個C#程序員。因爲字符串被截斷INSERT INTO table (field) VALUES ('baby',其餘被視爲無效代碼

+0

是這樣,它工作正常。但我如何處理查詢? – Heena

+0

你是什麼意思「我如何使用查詢?」?如果你在字符串的每個內部添加一個\,那麼沒有問題。 – Manuel

+0

我覺得我通過查詢插入數據,以便在文本框和文本框中傳遞的值將插入查詢然後我如何檢測到任何特殊的符號是否會 – Heena

0

INSERT INTO table (field) VALUES ('baby's world')將失敗。

有兩種方法停止這一點,第二個是可取的良好實踐編碼:

INSERT INTO table (field) VALUES ("baby's world")

INSERT INTO table (field) VAUES ('baby\'s world')

+0

true.that工作正常。但是如果INSERT INTO表(字段)值('+ name.txt +')'?其中name.txt的文本是「寶貝的世界」 – Heena

2

既然你是問有關Visual斯圖dio(.NET),你需要使用參數化查詢。構建查詢時

private void PrepareExample() 
{ 
    string s = Console.ReadLine(); 
    MySqlCommand cmd = new MySqlCommand("INSERT INTO movie(title) VALUES (?title)", myConnection); 
    cmd.Parameters.AddWithValue("?title", "baby's world"); 
    cmd.Prepare(); 
    cmd.ExecuteNonQuery(); 
} 

或者

private void PrepareExample() 
{ 
    MySqlCommand cmd = new MySqlCommand("INSERT INTO movie(title) VALUES (?title)", myConnection); 
    // try to input: baby's world. or try: baby"s world. everything are ok :-) 
    cmd.Parameters.AddWithValue("?title", Console.ReadLine()); 
    cmd.Prepare(); 
    cmd.ExecuteNonQuery(); 
} 

雖然這是不完全串聯,不要使用拼接,沒有使用這樣的:

qry = string.Format("INSERT INTO movie(title) VALUES("{0}", Console.ReadLine()); 

但如果你真的找到需要以這種方式運行SQL,將單引號替換爲反斜槓

qry = string.Format("INSERT INTO movie(title) VALUES("{0}", 
       Console.ReadLine().Replace("'", "\'"); 

但是請考慮使用參數化查詢而不是串聯或string.Format,因爲參數化查詢會自動處理這些分隔符的細微差別。

http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlcommand.html

1

只需使用mysql_real_escape_string()。沒有必要做其他事情。

例如:

mysql_real_escape_string($user), 
mysql_real_escape_string($password));