2013-07-25 14 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 Закладка (Детали) Значения ('Давайте рассмотрим пример, 23456789 делится на 7, 11, 13.

Сделать тройня, как показано, начиная с места устройства.

23 ... 456 ... 789

Теперь добавьте альтернативные триплеты:

23 + 789 = 812 и 456.

Отличие этих двух сумм: 812 - 456 = 356

Теперь разделите эту разницу на 7, мы получаем напоминание 6

И разделить эту разницу на 11, мы получаем напоминание 4

И разделить эту разницу на 13, мы получаем напоминание 5')

И это ошибка после того, как написать строку ...

2013-07-25 16: 38: 14.653 Математика хитрости Советы PATT erns [4346: c07] Ошибка при вставке «near» s: ошибка синтаксиса '

Как я могу вставить специальный символ, пожалуйста, помогите мне это заблаговременно.

+3

Вы никогда не должны формировать SQL-запросы вручную с помощью stringWithFormat и т. Д. Используйте стандартные API-интерфейсы sqlite для операторов привязки переменных/подготовленных операторов. –

+0

Ошибка при вставке 'near "s": синтаксическая ошибка' это журнал – Vasu

+0

'Значения ('Давайте возьмем ...' - Вы видите что-то не так там? (У вас не было бы этой проблемы, если бы вы использовал подготовленный оператор и привязку переменной.) –

ответ

4

Вы никогда не должны формировать запросы SQL вручную с помощью stringWithFormat и т.д.

Вместо этого вы должны использовать подготовленные заявления с переменным связыванием. Это обеспечит правильное кодирование и предотвратит инъекции SQL и т. Д. Начните с this sqlite introduction.

Основной шаблон должен использовать sqlite3_prepare, а затем sqlite3_bind_text, чтобы установить значение для одного из заполнителей ? в вашем запросе.

+0

не могли бы вы рассказать мне, как я могу вставить данные с помощью этого кода. – Vasu

+0

Я не буду должным образом делить то, что вы сказали ...... – Vasu

+0

SQL-инъекции? Простите меня, но кто что при запуске приложения iOS на вашем собственном устройстве? –

Смежные вопросы