Я написал схему базы данных (пока только одну таблицу) и операторы INSERT для этой таблицы в одном файле. Затем я создал базу данных следующим образом:
$ sqlite3 newdatabase.db
SQLite version 3.4.0
Enter ".help" for instructions
sqlite> .read ./schema.sql
SQL error near line 16: near "s": syntax error
Строка 16 моего файла выглядит примерно так:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
Проблема заключается в escape-символе для одинарной кавычки. Я также попытался дважды избежать одиночной кавычки (используя \\\'
вместо \'
), но это тоже не сработало. Что я делаю не так?
INSERT INTO table_name (field1, field2) VALUES (?, ?)
и значения будут предоставлены напрямую (и без подстановок).Я полагаю, что вы захотите убежать, удвоив одинарную цитату:
источник
для замены всех (') в вашей строке используйте
пример:
источник
На всякий случай, если у вас есть цикл или строка json, которую нужно вставить в базу данных. Попробуйте заменить строку одинарной кавычкой. вот мое решение. Например, если у вас есть строка, содержащая одну кавычку.
это работает для меня в C # и Java
источник
В C # вы можете использовать следующее для замены одинарных кавычек на двойные:
И вывод будет:
И, если вы работаете с Sqlite напрямую; вы можете работать с объектом вместо строки и ловить специальные вещи, такие как DBNull:
источник
В сценариях bash я обнаружил, что экранирование двойных кавычек вокруг значения необходимо для значений, которые могут быть нулевыми или содержать символы, требующие экранирования (например, дефисы).
В этом примере значение columnA может быть нулевым или содержать дефисы.
источник