Intereting Posts
Почему этот ключ NSUserDefaults содержит точку? Как конвертировать точки между UIViews и SKNodes iOS: Unix: Mac извлекает информацию из статической библиотеки в отношении поддерживаемой архитектуры (ов). Как? Изменение размера UITableViewCell для соответствия подробному тексту Добавление представления диспетчера детского просмотра в динамический UITableViewCell Как играть в два видео одновременно в UIWebView Включить полные журналы отладки для itunesstored на iOS 10, отключив замену данных с помощью <private> как отключить все пользовательские взаимодействия в UIWebView, кроме взаимодействия с прокруткой UIScrollView внутри UIPageViewController перекрывается. Ошибка или нет? Предотвращение скриншотов / очистка кэшированных данных, когда приложение iOS получает фоновые сообщения и возобновляется после долгого времени Как получить класс, который определяется методом, а не того экземпляра, который вызван методом? Быстрая ошибка: «MailCompositionService неожиданно завершается» Позиционирование SKSpriteNode Как получить другой значок приложения из процесса pid в системе iOS? Печать арабского текста с использованием ZPL (из iOS)

sqlite3_prepare_v2 () – нет такой таблицы

Я открываю базу данных, но когда я проверяю, что оператор в порядке, я получаю следующую ошибку.

Error no such table: Event 

Вот часть кода:

  if (sqlite3_open(dbpath, &database) == SQLITE_OK) { NSString *querySQL = @"SELECT nic,subject,location,participants,startDate,endDate FROM Event"; const char *query_stmt = [querySQL UTF8String]; if (sqlite3_prepare_v2(database,query_stmt, -1, &statement, NULL) == SQLITE_OK) 

Если я не открываю базу данных, я не получаю никаких ошибок, но если я снова вызову функцию, я получу:

 library routine called out of sequence 

Код для создания базы данных:

 -(BOOL)createDB { // Get the documents directory NSString *docsDir; NSArray *dirPaths; dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); docsDir = dirPaths[0]; // Build the path to the database file databasePath = [[NSString alloc] initWithString:[docsDir stringByAppendingPathComponent: @"reglis.db"]]; BOOL isSuccess = YES; NSFileManager *filemgr = [NSFileManager defaultManager]; if ([filemgr fileExistsAtPath: databasePath ] == NO) { const char *dbpath = [databasePath UTF8String]; if (sqlite3_open(dbpath, &database) == SQLITE_OK) { char *errMsg; const char *sql_stmt ="DROP TABLE IF EXISTS Client;CREATE TABLE Client (nic VARCHAR PRIMARY KEY NOT NULL UNIQUE , name VARCHAR, location VARCHAR, postalCode VARCHAR);DROP TABLE IF EXISTS Meio;CREATE TABLE Meio (id_meio VARCHAR PRIMARY KEY NOT NULL , nic VARCHAR, email VARCHAR, telefone VARCHAR, telemovel VARCHAR, id_tipo_meio VARCHAR);DROP TABLE IF EXISTS Event;CREATE TABLE Event (nic VARCHAR PRIMARY KEY NOT NULL , subject VARCHAR, location VARCHAR, participants VARCHAR, startDate VARCHAR, endDate VARCHAR);"; if (sqlite3_exec(database, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK) { isSuccess = NO; NSLog(@"Failed to create tables"); } sqlite3_close(database); return isSuccess; } else { isSuccess = NO; NSLog(@"Failed to open/create database"); } } return isSuccess; } 

Ваше сообщение об ошибке «нет такой таблицы», очевидно, говорит вам, что таблица не существует в базе данных. Это может произойти, если в любое время вашей разработки вы создали базу данных, но не смогли создать таблицы. И если это произойдет, sqlite3_open , если он не найдет базу данных, создаст пустую базу данных (с, очевидно, никакой таблицей event ). И последующие попытки запустить вашу программу найдут эту пустую базу данных и неправильно сделают вывод о том, что создавать таблицы не нужно.

Поэтому я предлагаю удалить приложение с вашего устройства / симулятора, чтобы он удалил все пустые базы данных, которые были непреднамеренно созданы ранее в процессе разработки / тестирования. Затем попробуйте запустить приложение еще раз. Или измените свой код, чтобы создать таблицы, если это необходимо (через create table if not exists ... , но не включайте ваши инструкции drop ) независимо от того, нашел ли он базу данных или нет.