>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Вставка в sqlite переменной типа string http://forum.mozilla-russia.org/viewtopic.php?id=58019 |
bucke > 10-02-2013 02:23:38 |
Не могу втавить текст в таблицу sqlite Выделить код Код:var t = 'Hello'; var sqlReq = "INSERT INTO 'testText' ('txt') VALUES ("+t+")"; ........... Выдает ошибку NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [mozIStorageConnection.createStatement]. Если в переменную t вставить числовое значение, то все нормально вставляется. В чем причина и как правильно записать что-бы без ошибок? |
Infocatcher > 10-02-2013 03:33:09 |
Эээ... ? |
bucke > 10-02-2013 03:48:34 |
Infocatcher пишет Помогло)) Огромное спасибо |
hydrolizer > 10-02-2013 06:05:33 |
bucke пишет
С использованием параметров: Выделить код Код:var stmt = mDBConn.createStatement("insert into tb_test (name) values (:name)"); stmt.bindStringParameter(0,"te'st"); stmt.execute(); И только именно так - строковая конкатенация параметров при работе с любой БД считается очень плохой практикой. Потому что как вы будете конкатенироавть, если потребуется вставить строку, содержащую апостроф? И потому что есть такая штука, как sql injection, которую предотвращает использование параметров. И потому что параметризованные запросы будут подняты из кэша при повторном использовании. |
bucke > 10-02-2013 14:44:27 |
Учту и перепишу свой код, спасибо за подробный ответ) |