我想根据用户提供的文本在SQLite数据库中创建一个表。一切工作正常,除了当我试图在文本内添加一个撇号(这是新的表名)。经过研究,我确定我在做什么是很容易受到注入是不是最好的做法:用撇号安全地插入SQLite数据库的数据
const char *sqlStr = [[NSString stringWithFormat:@"CREATE Table '%@' ('Name' 'char(50)','ID' 'integer')",theString]UTF8String];
所以我试图找到一种方法,以允许包含在表名撇号,安全地插入值存入数据库。我已经阅读过有关绑定值的信息,但是可以使用'CREATE TABLE'语句吗?或者仅当您将数据插入到已经存在的表中时?
感谢您的帮助。
我不会建议允许用户或命名列的其他一些动态的方式。如果有什么名称的列custom1。 – Joe 2011-03-31 13:35:02
嗨乔,我想让用户在数据库中创建表名称,而不是列,这些不会改变。使用撇号时,我只是不知道这样做的最佳方式。 – Ryan 2011-03-31 13:44:06
如果您使用[FMDB](http://github.com/ccgus/FMDB),那么它将在执行您的SQL(提供您使用它的API进行替换)之前为您处理所有必要的转义。我*高度*建议您检查一下。 – 2011-03-31 15:19:05