Intereting Posts
Как удалить объект из Parse? При запуске нового приложения вы поддерживаете только последнюю iOS или, по крайней мере, одну перед этим? Есть ли способ отключить приложение Watch приложения, не удаляя его из проекта? API импорта адресной книги iOS: Любая специальная обработка, необходимая для записей iCloud? Добавить календарь Tapku в приложение libobjc.A.dylib at objc_msgSend: 15 crash Изменение фона градиента, например, в Instagram Log In Как правильно обрабатывать переподключения к серверу в приложении Устройства уведомлений Hub исчезают после Push (APNS) Google Analytics: несколько вопросов о развертывании Как преобразовать массив байтов в строку base64 в swift? Что нужно, чтобы подписать обновление существующего приложения iOS? Хранить MKMapSnapshotter как NSData в памяти – Swift Преобразование NSArray из NSDate в массив отформатированных дат в виде строк При использовании раскадровки, почему viewWillAppear не выводит мои подзоны и viewDidLayoutSubviews

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; } 

Solutions Collecting From Web of "sqlite3_prepare_v2 () – нет такой таблицы"

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

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