Полезная информация

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№110-02-2013 02:23:38

bucke
Участник
 
Группа: Members
Зарегистрирован: 07-12-2012
Сообщений: 36
UA: Firefox 18.0

Вставка в sqlite переменной типа string

Не могу втавить текст в таблицу 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 вставить числовое значение, то все нормально вставляется. В чем причина и как правильно записать что-бы без ошибок?

Отредактировано bucke (10-02-2013 03:41:57)

Отсутствует

 

№210-02-2013 03:33:09

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 18.0

Re: Вставка в sqlite переменной типа string

Эээ...

Выделить код

Код:

"INSERT INTO 'testText' ('txt') VALUES ('"+ttt+"')"

?


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№310-02-2013 03:48:34

bucke
Участник
 
Группа: Members
Зарегистрирован: 07-12-2012
Сообщений: 36
UA: Firefox 18.0

Re: Вставка в sqlite переменной типа string

Infocatcher пишет

Эээ...

Выделить код

Код:

"INSERT INTO 'testText' ('txt') VALUES ('"+ttt+"')"

?

Помогло)) Огромное спасибо

Отредактировано bucke (10-02-2013 03:52:58)

Отсутствует

 

№410-02-2013 06:05:33

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 19.0

Re: Вставка в sqlite переменной типа string

bucke пишет

и как правильно записать что-бы без ошибок?

С использованием параметров:

Выделить код

Код:

var stmt = mDBConn.createStatement("insert into tb_test (name) values (:name)");
stmt.bindStringParameter(0,"te'st");
stmt.execute();

И только именно так - строковая конкатенация параметров при работе с любой БД считается очень плохой практикой. Потому что как вы будете конкатенироавть, если потребуется вставить строку, содержащую апостроф? И потому что есть такая штука, как sql injection, которую предотвращает использование параметров. И потому что параметризованные запросы будут подняты из кэша при повторном использовании.

Отсутствует

 

№510-02-2013 14:44:27

bucke
Участник
 
Группа: Members
Зарегистрирован: 07-12-2012
Сообщений: 36
UA: Firefox 18.0

Re: Вставка в sqlite переменной типа string

Учту и перепишу свой код, спасибо за подробный ответ)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]