Как построить iOS-оценку SQL - PullRequest
0 голосов
/ 08 июня 2011

У меня есть база данных с именем catalog, в ней две три колонки, одна из которых является просто полем ключа, другая - целым числом с именем «code», а другая - строкой NSString с именем «make».

Мое приложение позволяет пользователю вводить код для поиска любых производителей, имеющих этот код, поэтому есть поле uitext, где они могут ввести код, после чего пользователь нажимает ячейку uitextfield, которая загружает новый uitableview в стек навигации Я хочу отобразить любые марки, которые имеют код, который был введен в предыдущем представлении здесь. У меня большая часть кода выполнена, поскольку я следую прекрасному руководству «Профессиональное программирование приложений для баз данных iphone и ipad», однако на этапе, который я делаю они просто показывают все данные, а не ограничение данных, я хотел бы знать, как это сделать.

вот моя строка запроса sql

const char *sql = "SELECT catalog.make From catalog where catalog.code =???

Я хотел бы знать, что будет дальше, как выполнить это утверждение с кодом, введенным пользователем в поле uitext?

любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 08 июня 2011

Я бы просто превратил оператор SQL в NSString, это проще.

Предполагая, что UITextField, из которого вы собираете данные, это IBOutlet, называемое myText:

NSString *sql = [[NSString alloc] initWithFormat:@"SELECT catalog.make FROM catalog WHERE catalog.code = %@", myText.text];
const char *cString = [sql cStringUsingEncoding:NSASCIIStringEncoding];
[sql release];
0 голосов
/ 26 ноября 2011

Если вы создаете операторы SQL для iOS, вы можете рассмотреть возможность использования библиотеки Objective-C для iOS, например https://github.com/ziminji/objective-c-sql-query-builder.. Это поможет вам дезинфицировать ваши данные, поскольку вы имеете дело с пользовательскими данными. Вы не хотите подвергать свое приложение iOS атакам вставки SQL. Использование конструкторов запросов SQLite в этой библиотеке поможет предотвратить такие атаки и создаст для вас операторы SQL. Он также предоставляет класс для управления соединениями с вашей базой данных. Если вы предпочитаете, вы можете использовать ORM, чтобы упростить построение запросов. Попробуйте.

0 голосов
/ 08 июня 2011
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {

    } 

    sqlite3_bind_text(statement, 1, [str UTF8String], -1, SQLITE_TRANSIENT);

, где str - введенный вами текст.Вы можете передать его в качестве параметра в методе, который вы делаете этот запрос.И наконец

sqlite3_finalize(statement);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...