Имя: Пароль:
1C
 
Прямой запрос и апостроф (') (Как вставить запись в БД (sqlite), содержащий апостроф)
0 Aleksey_3
 
05.10.10
00:26
1С дбф, 1SQLite
Как вставить запись в БД (sqlite), содержащий апостроф.

Например пусть будет у нас внешняя таблица (Table) с одной колонкой name. Мы хотим вставить в эту таблицу наименование товара.

Запрос.ВыполнитьЗапрос(insert into Table value ('" + ПеременнаСИменем + "'));

Если ПеременнаСИменем содержит апостроф, то происходит ошибка (причина которой понятно). А вот как сохранить апостроф и вставить текст - непонятно.
1 PushoN
 
05.10.10
00:50
Обрезать Переменную если содержит апостроф.
2 trdm
 
05.10.10
01:19
попробовать экранировать "\'"
ы?
3 trdm
 
05.10.10
01:42
+(2) чета интерпретатор консольный клинит после
insert into tab1 values('one\' two', 12);
4 Warlock
 
05.10.10
02:14
insert into tab1 values('one'' two', 12);
5 Ёпрст
 
гуру
05.10.10
09:44
(0) ''
6 Cthulhu
 
05.10.10
09:57
волшебное правило: для включения спец.символа в литерал он дублируется.
7 ghOstik
 
05.10.10
10:00
попробуй использовать две ковычки "" у работает с ними
8 Aleksey_3
 
05.10.10
10:35
Т.е. получаеться прежде чем вставить строку ее нужно будет предварительно модифицировать :(
9 orefkov
 
05.10.10
10:51
СтрЗаменить("'", "''")
10 orefkov
 
05.10.10
10:54
Простите, пишу с больницы с телефона.
+ СтрЗаменить(ПеременнаясИменем, "'", "''") +
Либо биндить как SQL-параметр
11 Ёпрст
 
гуру
05.10.10
13:23
(10) ты лучше выздоравливай..
:)
12 trdm
 
05.10.10
16:04
хм.. пашет.
SQLite version 3.7.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table tab1 (one varchar(20), two smalint);
sqlite> insert into tab1 values('o1',10);
sqlite> insert into tab1 values('o1''55',20);
sqlite> select * from tab1;
o1|10
o1'55|20
AdBlock убивает бесплатный контент. 1Сергей