Napisałem schemat bazy danych (tylko jedna tabela do tej pory), a instrukcje INSERT dla tej tabeli w jednym pliku. Potem stworzył bazę danych w następujący sposób:Escape pojedynczy cudzysłów do użycia w zapytaniu SQLite
$ 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
Linia 16 od mojego pliku wygląda mniej więcej tak:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
Problemem jest znakiem ucieczki dla jednego cytatu. Próbowałem również podwójne unikanie pojedynczego cytatu (przy użyciu \\\'
zamiast \'
), ale to też nie działa. Co ja robię źle?
Ponadto, należy rozważyć użycie bound parametry, jeśli obsługuje je język hosta (większość z nich, ale powłoka SQLite nie). SQL byłby wówczas "INSERT INTO nazwa_tabeli (pole1, pole2) WARTOŚCI (?,?)", A wartości byłyby dostarczane bezpośrednio (i bez podstawień). –