Estoy intentando crear una tabla en una base de datos SQLite basada en el texto proporcionado por el usuario. Todo funcionaba correctamente, excepto cuando intenté agregar un apóstrofo dentro del texto (que sería el nuevo nombre de la tabla). Después de la investigación, decidí que lo que estaba haciendo no es la mejor práctica como es vulnerable a la inyección:Inserción segura de datos en la base de datos SQLite con el apóstrofo
const char *sqlStr = [[NSString stringWithFormat:@"CREATE Table '%@' ('Name' 'char(50)','ID' 'integer')",theString]UTF8String];
Así que estoy tratando de encontrar una manera de permitir que los apóstrofes que se incluirán en el nombre de tabla e insertar de forma segura el valor en la base de datos. He leído acerca de los valores de enlace, pero ¿es esto posible con la declaración 'CREATE TABLE'? ¿O solo cuando insertas datos en una tabla ya existente?
Gracias por su ayuda.
no recomendaría que permite al usuario o alguna otra forma dinámica de nombrar columnas. En todo caso, nombre la columna custom1. – Joe
Hola Joe, quiero que el usuario cree el nombre de la tabla en la base de datos, no las columnas, que no serán modificables. Simplemente no sé la mejor manera de hacerlo cuando trabaje con apóstrofes. – Ryan
Si usa [FMDB] (http://github.com/ccgus/FMDB), manejará todos los elementos de escape necesarios antes de ejecutar su SQL (siempre que use su API para sustitución). Yo * altamente * recomiendo que lo revises. –