Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Novichok2
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 16
#1

Компиляция запроса в байт-код - Objective-C

05.05.2013, 20:38. Просмотров 1117. Ответов 11
Метки нет (Все метки)

Доброго времени суток!
Никак не получается скомпилировать в байт код запрос перед отправкой в базу....
Вот кусок кода:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Получаем путь к базе данных
    NSString * path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"DataBase.sql"];
    
    // Открываем базу данных
    if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {
        // Запрашиваем id городов
        const char *sql = "SELECT id FROM city_";
        sqlite3_stmt *statement;
        
        // Компилируем запрос в байткод перед отправкой в базу данных
        if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
            while (sqlite3_step(statement) == SQLITE_ROW) {
                _id = sqlite3_column_int(statement, 0);
            }
        }
        
        sqlite3_finalize(statement);
    } else {
        sqlite3_close(database);
        NSAssert1(NO, @"Failed to open database with message '%s'.", sqlite3_errmsg(database));
    }
Вот база:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
INSERT INTO `city_` (`id`, `id_region`, `id_country`, `oid`, `city_name_ru`, `city_name_en`) VALUES
(17849, 1611, 219, 4400, 'Москва', 'Moscow'),
(17850, 1611, 219, 4421, 'Подольск', 'Podolsk'),
(17851, 1611, 219, 4371, 'Коломна', 'Kolomna'),
(17852, 1611, 219, 4358, 'Зеленоград', 'Zelenograd'),
(17853, 1611, 219, 4438, 'Сергиев Посад', 'Sergiev Posad'),
(17854, 1611, 219, 4313, 'Абрамцево', 'Abramtsevo'),
(17855, 1611, 219, 4314, 'Алабино', 'Alabino'),
(17856, 1611, 219, 4315, 'Апрелевка', 'Aprelevka'),
(17857, 1611, 219, 4316, 'Архангельское', 'Arhangelskoe'),
(17858, 1611, 219, 4317, 'Ашитково', 'Ashitkovo'),
(17859, 1611, 219, 7592923, 'Байконур', 'Baikonur'),
(17860, 1611, 219, 4318, 'Бакшеево', 'Baksheevo'),
(17861, 1611, 219, 4319, 'Балашиха', 'Balashiha'),
(17862, 1611, 219, 4320, 'Барыбино', 'Barybino'),
(17863, 1611, 219, 58417705, 'Белозёрский', 'Belozerskii'),
(17864, 1611, 219, 4321, 'Белоомут', 'Beloomut');
Никак не проходит строка:
Objective-C
1
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2013, 20:38     Компиляция запроса в байт-код
Посмотрите здесь:

Java SE байт-код
Отправка POST запроса на сервер Objective-C
Objective-C Открытие второго контроллера после удачного POST запроса
Python Байт-код
Objective-C Добавление кода отправки GET запроса в AppDelegate.m
Байт-код микропрограммы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
korvin_
1657 / 1195 / 181
Регистрация: 28.04.2012
Сообщений: 4,334
06.05.2013, 07:46     Компиляция запроса в байт-код #2
Не знаю как в данном случае, но в других языках сталкивался с тем, что запросы без параметров нельзя подготовить (prepare).
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
06.05.2013, 11:49     Компиляция запроса в байт-код #3
А через CoreData не лучше?
Novichok2
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 16
06.05.2013, 16:36  [ТС]     Компиляция запроса в байт-код #4
Цитата Сообщение от mobidevelop Посмотреть сообщение
А через CoreData не лучше?
Может конечно и лучше, но я не знаю как...

Добавлено через 3 часа 42 минуты
Цитата Сообщение от mobidevelop Посмотреть сообщение
А через CoreData не лучше?
Напиши "в двух словах" как.....
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
06.05.2013, 16:38     Компиляция запроса в байт-код #5
В двух словах - "Core Data". Только писать в гугле надо.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
07.05.2013, 02:10     Компиляция запроса в байт-код #6
Novichok2, в двух словах и правда никак. CoreData очень объемная тема. Как ни новый проект - так горы понимания, баги, чтото не так, злость, а потом радость и счастье.
Novichok2
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 16
10.05.2013, 01:28  [ТС]     Компиляция запроса в байт-код #7
Ребят........ Я тут по гуглу посмотрел. Все показывают работу CoreData с SQL, которые создаются в самом проекте с типом .xcdatamodeld, а у меня сторонняя, которую я просто кинул, как файл с типом .sql.

Добавлено через 10 часов 21 минуту
Цитата Сообщение от zulkis Посмотреть сообщение
Novichok2, в двух словах и правда никак. CoreData очень объемная тема. Как ни новый проект - так горы понимания, баги, чтото не так, злость, а потом радость и счастье.
Я тут по гуглу посмотрел. Все показывают работу CoreData с SQL, которые создаются в самом проекте с типом .xcdatamodeld, а у меня сторонняя, которую я просто кинул, как файл с типом .sql.
Vorona
Peace 2 all shining faces
666 / 528 / 45
Регистрация: 05.03.2010
Сообщений: 1,271
10.05.2013, 02:58     Компиляция запроса в байт-код #8
CoreData по-умолчанию работает с SQLite, а сам файлик *.sqlite создается в папке Documents в директории самого приложения на девайсе или симуляторе, там его и можно посмотреть, но суть в том, что вы напрямую не работаете с sql запросами, CoreData это делает за вас и читает\пишет сам из этого файла, вы же работаете с базой данных при помощи привычной объектной модели и она уже мапится в sqlite бд.
Конечно, можно настроить CoreData для работы с разными типа хранилищ данных.

Если проект не в самом разгаре и вы только учитесь, то лучше разберитесь с CoreData, так как голый sql\sqlite никто почти не использует и все работают с хранением данных при помощи CoreData.
Novichok2
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 16
11.05.2013, 16:23  [ТС]     Компиляция запроса в байт-код #9
Цитата Сообщение от Vorona Посмотреть сообщение
CoreData по-умолчанию работает с SQLite, а сам файлик *.sqlite создается в папке Documents в директории самого приложения на девайсе или симуляторе, там его и можно посмотреть, но суть в том, что вы напрямую не работаете с sql запросами, CoreData это делает за вас и читает\пишет сам из этого файла, вы же работаете с базой данных при помощи привычной объектной модели и она уже мапится в sqlite бд.
Конечно, можно настроить CoreData для работы с разными типа хранилищ данных.

Если проект не в самом разгаре и вы только учитесь, то лучше разберитесь с CoreData, так как голый sql\sqlite никто почти не использует и все работают с хранением данных при помощи CoreData.
А у меня файл с типом .sql, а не .sqlite. Я даже не знаю, Core Data работает с ним? Везде где я смотрел были .sqlite(sample code'ы и т.д.)
Vorona
Peace 2 all shining faces
666 / 528 / 45
Регистрация: 05.03.2010
Сообщений: 1,271
11.05.2013, 17:43     Компиляция запроса в байт-код #10
Цитата Сообщение от Novichok2 Посмотреть сообщение
А у меня файл с типом .sql, а не .sqlite. Я даже не знаю, Core Data работает с ним? Везде где я смотрел были .sqlite(sample code'ы и т.д.)
Вроде бы работает нормально, как с *.sql, так и c *.sqlite, а так же *.db, не уверен на 100%

Ну, а если и нет, у вас какой-то проект уже в разгаре или существует база данных на миллионы записей и вы с ней должны работать?
Если этот файлик DataBase.sql не так важен для вас, то забейте на этот голый SQLite и переходите на CoreData, пусть он сам занимается такой чепухой.
Novichok2
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 16
13.05.2013, 14:19  [ТС]     Компиляция запроса в байт-код #11
Цитата Сообщение от Vorona Посмотреть сообщение
Вроде бы работает нормально, как с *.sql, так и c *.sqlite, а так же *.db, не уверен на 100%

Ну, а если и нет, у вас какой-то проект уже в разгаре или существует база данных на миллионы записей и вы с ней должны работать?
Если этот файлик DataBase.sql не так важен для вас, то забейте на этот голый SQLite и переходите на CoreData, пусть он сам занимается такой чепухой.
Не, походу не работает... Пишет, что файл по данному пути не может быть SQL базой данных.
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
13.05.2013, 14:37     Компиляция запроса в байт-код #12
А если переименовать?
Yandex
Объявления
13.05.2013, 14:37     Компиляция запроса в байт-код
Ответ Создать тему
Опции темы

Текущее время: 04:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru