2013-07-25 168 views
0

我試試這段代碼。在sqlite中插入特殊字符

query = [NSString stringWithFormat:@"INSERT INTO Bookmark(Names,Details) Values('%@','%@')", delegate.str, delegate.str1]; 

    NSLog(@"%@",query); 

    sqlite3_stmt *compiledStatement; 

    if (sqlite3_open([databasepath UTF8String],&database) == SQLITE_OK) 
    { 

     if(sqlite3_prepare_v2(database,[query UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK) 
     { 
      if(SQLITE_DONE != sqlite3_step(compiledStatement)) 
       NSLog(@"Error while inserting data: '%s'", sqlite3_errmsg(database)); 
      else 
       NSLog(@"New data inserted"); 

      sqlite3_reset(compiledStatement); 
     }else 
     { 
      NSLog(@"Error while inserting '%s'", sqlite3_errmsg(database)); 
     } 
     sqlite3_finalize(compiledStatement); 
    } 

這是我想要存儲SQLite的INSERT INTO書籤(詳細信息)VALUES('讓我們舉個例子,23456789 7,11分,13

讓三胞胎如圖所示,從個位開始。

23 ... 456 ... 789

立即添加備用三胞胎:

23 + 789 = 812和456。

區別這兩個款項: 812 - 456 = 356

現在7分這種差異,我們得到提醒6

而到11分這種差異,我們得到提醒4

而且13分這種差異,我們得到提醒5' )

而這個錯誤寫你行後...

2013年7月25日16:38:14.653數學技巧提示帕特erns [4346:c07]插入'near's時出錯:語法錯誤'

如何插入特殊字符請提前幫助我解決此問題。

+3

你應該永遠不要使用stringWithFormat手動形成SQL查詢等。使用標準的sqlite API來進行變量綁定/預處理語句。 –

+0

插入'near's時出錯:語法錯誤'這是日誌 – Vasu

+0

'Values('Let's take an ...' - 你看到有什麼錯誤嗎???(如果你有這個問題,你就不會有這個問題了使用準備好的語句和變量綁定。) –

回答

4

你應該使用手動stringWithFormat等

相反,你應該使用變量綁定準備語句NEVER形成SQL查詢。這將確保正確的編碼和避免SQL注入等。你應該首先看this sqlite introduction

的基本模式是使用sqlite3_prepare其次是像sqlite3_bind_text設置數值爲您查詢?佔位符之一。

+0

可以請你告訴我如何插入數據與此代碼.. – Vasu

+0

我不會正確地低估你說的...... – Vasu

+0

SQL注入?對不起,但誰當你在自己的設備上運行一個iOS應用程序時,會注入什麼? –