我想根據用戶提供的文本在SQLite數據庫中創建一個表。一切工作正常,除了當我試圖在文本內添加一個撇號(這是新的表名)。經過研究,我確定我在做什麼是很容易受到注入是不是最好的做法:用撇號安全地插入SQLite數據庫的數據
const char *sqlStr = [[NSString stringWithFormat:@"CREATE Table '%@' ('Name' 'char(50)','ID' 'integer')",theString]UTF8String];
所以我試圖找到一種方法,以允許包含在表名撇號,安全地插入值存入數據庫。我已經閱讀過有關綁定值的信息,但是可以使用'CREATE TABLE'語句嗎?或者僅當您將數據插入到已經存在的表中時?
感謝您的幫助。
我不會建議允許用戶或命名列的其他一些動態的方式。如果有什麼名稱的列custom1。 – Joe 2011-03-31 13:35:02
嗨喬,我想讓用戶在數據庫中創建表名稱,而不是列,這些不會改變。使用撇號時,我只是不知道這樣做的最佳方式。 – Ryan 2011-03-31 13:44:06
如果您使用[FMDB](http://github.com/ccgus/FMDB),那麼它將在執行您的SQL(提供您使用它的API進行替換)之前爲您處理所有必要的轉義。我*高度*建議您檢查一下。 – 2011-03-31 15:19:05