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

Objective-C

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

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

05.05.2013, 20:38. Просмотров 1128. Ответов 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)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2013, 20:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Компиляция запроса в байт-код (Objective-C):

Байт-код - Python
Вопрос таков, всегда ли Python на предварительном этапе создает байт код или нет? В некоторой литературе пишут, что да. Однако файл с...

байт-код - Java SE
как посчитать суму байт-кодов всех символов даной строки?

jvm Байт код - Java
Дан *.class файл. Декомпилировать, изменить, потом закомпилировать обратно нельзя. Тестер выдаст ошибку. Как можно изменить файл при помощи...

Байт-код микропрограммы - Микропроцессоры
Добрый день! Уважаемые форумчане, помогите разобраться со следующим вопросом. Есть ли в природе универсальный принцип...

Конвертация С исходников в байт код - Java
Доброго времени суток Существует ли библиотека для Java (нужно, чтобы работало под Андроид), которая бы исходник на С (хотя бы на...

Декомпиляция Flash и байт код - ActionScript
Здравствуйте, декомпилировал Flash ролик и там лежат два action script, один из них я открыл легко, другой при декомпиляции зависает...

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

Добавлено через 3 часа 42 минуты
Цитата Сообщение от mobidevelop Посмотреть сообщение
А через CoreData не лучше?
Напиши "в двух словах" как.....
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
06.05.2013, 16:38 #5
В двух словах - "Core Data". Только писать в гугле надо.
0
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
07.05.2013, 02:10 #6
Novichok2, в двух словах и правда никак. CoreData очень объемная тема. Как ни новый проект - так горы понимания, баги, чтото не так, злость, а потом радость и счастье.
1
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.
0
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
10.05.2013, 02:58 #8
CoreData по-умолчанию работает с SQLite, а сам файлик *.sqlite создается в папке Documents в директории самого приложения на девайсе или симуляторе, там его и можно посмотреть, но суть в том, что вы напрямую не работаете с sql запросами, CoreData это делает за вас и читает\пишет сам из этого файла, вы же работаете с базой данных при помощи привычной объектной модели и она уже мапится в sqlite бд.
Конечно, можно настроить CoreData для работы с разными типа хранилищ данных.

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

Ну, а если и нет, у вас какой-то проект уже в разгаре или существует база данных на миллионы записей и вы с ней должны работать?
Если этот файлик DataBase.sql не так важен для вас, то забейте на этот голый SQLite и переходите на CoreData, пусть он сам занимается такой чепухой.
1
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 базой данных.
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
13.05.2013, 14:37 #12
А если переименовать?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2013, 14:37
Привет! Вот еще темы с ответами:

Компиляция в машинный код - C#
Подскажите, пожалуйста, как и с помощью чего скомпилировать проект написанный в VStudio на C# в полноценный исполняемый файл. Ну чтобы он...

JIT компиляция в машинный код - .NET
Написал на MSIL функцию вызова unmanaged кода. При отладке в OLLY заметил много непонятного машинного кода. Те места, где мне все понятно,...

Компиляция Си и С++. Скомпилируется ли приведенный код - C (СИ)
Возможно ли скомпилить такое? main.cpp #include <stdio.h> #include "file.h" int main() { printf("Hello"); ...

Компиляция не проходит, но код тот же. - C (СИ)
Писал код, программа разрасталась, по мере ее увелечения много раз компилировал и все было нормально, работало. Потом Dev-C++ закрыл. Потом...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.05.2013, 14:37
Ответ Создать тему
Опции темы

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