Я удаление всех данных из таблицы, используя ниже фрагмент кодаВЕЬЕТЕ в Iphone не работает
NSString *deleteStatementNS = [NSString stringWithFormat:
@"DELETE FROM %@",[tableNames objectAtIndex:i]];
const char *prepareDelete ="DELETE FROM '?'";
const char *tbleName = [[tableNames objectAtIndex:i] UTF8String];
if (sqlite3_prepare_v2(dBase, prepareDelete, -1, &dbpreprdstmnt, NULL) == SQLITE_OK)
{
dbrc = sqlite3_bind_text(dbpreprdstmnt, 1, tbleName, -1, SQLITE_TRANSIENT);
dbrc = sqlite3_step(dbpreprdstmnt);
sqlite3_finalize(dbpreprdstmnt);
dbpreprdstmnt = NULL;
}
else
{
NSLog(@"Error %@",[NSString stringWithCString:sqlite3_errmsg(dBase) encoding:NSUTF8StringEncoding]);
}
Но, к сожалению, удаление не происходит я получаю сообщение об ошибке, как Error no such table: ?
Я не в состоянии подготовить только заявление. Но если я использую протокол подготовки, например, ниже
const char *prepareDelete =[deleteStatementNS UTF8String];
Это работает абсолютно нормально. Я не могу привязать переменную, чтобы остановить атаки SQL-инъекций. Возможно, я знаю причину этой ошибки. Я нашел много мест, где сообщается об этом фрагменте кода, поскольку он работает нормально.
Спасибо за ваш ответ. Фактически я получаю имена таблиц из другого SQL-запроса, и он будет храниться в массиве во время выполнения. Все имена таблиц являются динамическими, поэтому я не вижу проблем с его использованием. И я знаю, что никто не может сделать его приложение полностью защищенным от хакера. Но для curiosoty, как хакер все еще может взломать мою БД или как он все еще может делать инъекции, если я привяжу переменные. Пожалуйста, просветите меня, пожалуйста. – Star