SQLlite 中插入單引號

參考:http://blog.csdn.net/w_xue/article/details/18305753


通常我們在數據庫中插入數據時,爲了防止數據中的特殊字符導致SQL語法錯誤,會在插入的內容前後加上單引號。

例如我們有如下數據表:

  1. CREATE TABLE `xs_sessions` ( `session_uuid` VARCHAR(36) NOT NULL,  
  2.     `teacher_uuid` VARCHAR(36) NOT NULL,  
  3.     `nameVARCHAR(128) NOT NULL,  
  4.     `icon_path_name` VARCHAR(255) ,  
  5.     `create_date_time` DATETIME NOT NULL,  
  6.     `modify_date_time` DATETIME NOT NULL,  
  7.     PRIMARY KEY (`session_uuid`),  
  8.     FOREIGN KEY (`teacher_uuid`) REFERENCES `xs_user` (`user_uuid`));  

現在往其中插入一條數據,考慮到字段中有空格,我們會在所有value的前後都加上單引號,例如:
  1. insert into xs_sessions values('S-01','T-01','primary english','icon_path_name','create_date_time','modify_date_time');  

這樣可以避免value中包含反斜槓,逗號,句號,分號等各種符號的影響,但是如果value中包含單引號則會導致語法錯誤。

解決辦法爲將單引號都改爲兩個單引號即可,例如上例中如果name爲mary's english,那麼插入語句爲:

  1. insert into xs_sessions values('S-02','T-01','mary''s english','icon_path_name','create_date_time','modify_date_time');  

查詢結果爲:
  1. S-02|T-01|mary's english|icon_path_name|create_date_time|modify_date_time  

表示我們的插入是正確的。

官方的描述:How do I use a string literal that contains an embedded single-quote (') character?



update:

Android開發中,如果使用ContentValues來insert/update數據,則android會自動處理單引號的情況,只有在開發者手動寫sql語句時才需要採取上述做法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章