Одинарные кавычки в значениях должны быть экранированы с помощью двойных одинарные кавычки в SQLite (see here). Обратные косые черты в порядке, как литералы. Таким образом, вы должны использовать:
"INSERT INTO Artist(Id,Title) VALUES ('1','Fred''s ball \ shoe');";
example project для cordova-sqlite-porter содержит complex example, который иллюстрирует использование как одиночных кавычек и обратной косой черты в строках значений, например:
INSERT INTO [Artist] ([ArtistId], [Name]) VALUES (88, 'Guns N'' Roses');
INSERT INTO [Track] ([TrackId], [Name], [AlbumId], [MediaTypeId], [GenreId], [Composer], [Milliseconds], [Bytes], [UnitPrice]) VALUES (3435, 'Cavalleria Rusticana \ Act \ Intermezzo Sinfonico', 302, 2, 24, 'Pietro Mascagni', 243436, 4001276, 0.99);
Привет, да, именно так! Но я получаю эту строку из службы, которая приносит ее как «Guns N 'Roses». Поэтому, если я создам sql-запрос с параметрами, проблем не будет, потому что он будет обрабатывать одиночные кавычки. Я не могу использовать регулярное выражение для замены одиночной кавычки, потому что эта строка, которую я получаю от службы, может содержать теги html, такие как «
Независимо от того, как вы это делаете, вам нужно будет удвоить одиночные кавычки в значениях. Вы можете использовать регулярное выражение, даже если они содержатся в HTML. Просто нужно игнорировать одиночные кавычки в атрибутах. Что-то вроде этого: '/> (?: [^ <'] * (') [^ <'] *) * G' – DaveAlden