Escribí el esquema de la base de datos (solo una tabla hasta ahora) y las instrucciones INSERT para esa tabla en un archivo. Luego creé la base de datos de la siguiente manera:
$ 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
La línea 16 de mi archivo se ve así:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
El problema es el carácter de escape para una comilla simple. También intenté escapar dos veces la comilla simple (usando en \\\'
lugar de \'
), pero eso tampoco funcionó. ¿Qué estoy haciendo mal?
INSERT INTO table_name (field1, field2) VALUES (?, ?)
y los valores serían suministrados directamente (y sin sustituciones).Creo que te gustaría escapar duplicando la cita simple:
fuente
para reemplazar todo (') en su cadena, use
ejemplo:
fuente
Por si acaso, si tiene un bucle o una cadena json que necesita insertar en la base de datos. Intenta reemplazar la cadena con una comilla simple. Aquí está mi solución. ejemplo si tiene una cadena que contiene una comilla simple.
esto funciona para mí en C # y Java
fuente
En C # puede usar lo siguiente para reemplazar la comilla simple con una comilla doble:
Y la salida será:
Y, si está trabajando con Sqlite directamente; puedes trabajar con objetos en lugar de cadenas y capturar cosas especiales como DBNull:
fuente
En los scripts de bash, descubrí que las comillas dobles alrededor del valor eran necesarias para los valores que podían ser nulos o que contenían caracteres que requieren un escape (como guiones).
En este ejemplo, el valor de la columna A podría ser nulo o contener guiones:
fuente