Eu escrevi o esquema do banco de dados (apenas uma tabela até agora) e as instruções INSERT para essa tabela em um arquivo. Então eu criei o banco de dados da seguinte maneira:
$ 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
A linha 16 do meu arquivo é mais ou menos assim:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
O problema é o caractere de escape para uma única citação. Também tentei escapar duas vezes da citação simples (usando em \\\'
vez de \'
), mas isso também não funcionou. O que estou fazendo de errado?
INSERT INTO table_name (field1, field2) VALUES (?, ?)
e os valores seriam fornecidos diretamente (e sem substituições).Eu acredito que você gostaria de escapar dobrando a citação única:
fonte
para substituir todos (') na sua string, use
exemplo:
fonte
Apenas no caso de você ter um loop ou uma string json que precisa inserir no banco de dados. Tente substituir a string por uma única citação. aqui está a minha solução. exemplo, se você tiver uma sequência que contenha uma aspas simples.
isso funciona para mim em c # e java
fonte
Em C #, você pode usar o seguinte para substituir as aspas simples por aspas duplas:
E a saída será:
E, se você estiver trabalhando diretamente com o Sqlite; você pode trabalhar com objetos em vez de string e capturar coisas especiais como DBNull:
fonte
Nos scripts bash, descobri que era necessário escapar aspas duplas ao redor do valor para valores que poderiam ser nulos ou continham caracteres que requerem escape (como hífens).
Neste exemplo, o valor da colunaA pode ser nulo ou conter hífens .:
fonte