1. 程式人生 > >關於處理SQL特殊字元的基本方法總結

關於處理SQL特殊字元的基本方法總結

在sql語句中,有些特殊字元,是sql保留的。比如 ' [ ]  等。我們可以先看看它們的用法。

當需要查詢某資料時,加入條件語句,或著當你需要insert記錄時,我們用  '  來將字元型別的資料引起來。比如:
Select * from Customers where City = 'London'

當表的名字或列的名字中,含有空格等一些特殊字元時,我們需要用[] 將表名引起來,告訴語法分析器,[]號內的才是一個完整的名稱。比如

Select * from [Order Details]

如果,字元資料中,含有 '  改怎麼辦呢?其實,好多人在這裡並沒有處理字元川中 ' 符號,才造成sql 注射危險。就那上面的那個例子。在Sql語句拼接的時代,比如

string sql = "select * from Customers where CustomerID = '" + temp + "'";

如果,我給temp賦值為 Tom' or 1=1 --- 
那麼你拼接起來的語句為 select * from Customers where CustomerID = 'Tom' or 1=1 --- '
哈哈,1=1 衡為真,---會把後面的sql語句註釋掉。而前面因為有輸入的 ' 而使的語句是合法的。那or的條件,會把所有的記錄都選出來。這就是sql注入。在做使用者登陸時,如果沒有處理該問題,那你的系統受危害的可能性會很高的。
如何處理字元資料中的 ' 符號呢? 方法很簡單,用兩個 ' 符號代替一個。 比如,其實際傳入的值為Lon'don,處理後為
Select * from Customers where City = 'Lon''don'
就可以了。

如果表或列的名稱中含有 [ 或 ] 字元呢?比如Select * from [Order] Details],那中間 ] 符號豈不是先和第一個[ 配了。後面的就是非法的了。怎麼辦呢? 簡單,使用 ]] 代替 ] 。對於[,則無須處理。那就該為
Select * from [Order]] Details]。

2、解決方法(