2013-05-09 62 views
0

我有一個由FMDB向表中插入值的問題。 我有SQL字符串是這樣的:用FMDB在SQLite上插入特殊字符

NSString *sql = [NSString stringWithFormat:@"INSERT INTO table(COMPANY, PAGE_NO) VALUES ('%@',%d,%d)",value1,value2,value3]; 

我使用FMDB這樣上面的SQL字符串:

[FMDatabase: 0x433e80> executeUpdate: sql] 

它的工作原理,但是當我使用value1 = @"Test'12"。它有一個字符" ' ",它失敗。

請幫助我,我想使用方法executeUpdate從FMDB

感謝保持

回答

4

你看上去不及格的參數來查詢正確的數字,您列出2列傳遞3個參數。我會認爲這是一個錯字。

你應該真的參數化你的查詢;使用?參數應該去,而不是傳遞給executeUpdate。這樣,有問題的字符將被自動處理。

這會將您的代碼更改爲更類似的東西;

NSString *sql = @"INSERT INTO table(COMPANY, PAGE_NO) VALUES (?,?)"; 
[database executeUpdate:sql, value1, [NSNumber numberWithInt:value2], nil]; 

注意調用時所需的int轉換爲NSNumber,因爲executeUpdatenumberWithInt要求所有參數爲對象,而不是原始類型。