2016-09-20 3 views
0

Я пытаюсь создать SQLite DB в Xcode с помощью Objective-c, но у меня возникла проблема с созданием таблицы. Я считаю, что моя функция вставки выполнена правильно, но когда я пытаюсь запустить ее, я получаю следующую ошибку:Ошибка создания SQLite DB в Objective-C

2016-09-20 09: 39: 31.612 Тест [58546: 5169036] Невозможно подготовить заявление: нет такой таблицы : Пользователи

Мой код приведен ниже. Пожалуйста, дайте мне знать, если знаете, что я могу делать неправильно. Благодаря!

[super viewDidLoad]; 
//do any addtional setup after view load, typically from nib 
NSString *docsDir; 
NSArray *dirPaths; 

//gets the directory 
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
docsDir = dirPaths[0]; 

//Build path to keep database 
_databasePath = [[NSString alloc] initWithString:[docsDir stringByAppendingPathComponent:@"Users.db"]]; 
NSFileManager *filemgr = [NSFileManager defaultManager]; 

    if([filemgr fileExistsAtPath:_databasePath] == NO) { 
    const char *dbPath = [_databasePath UTF8String]; 

    if(sqlite3_open(dbPath, &_DB) == SQLITE_OK) { 
     char *errorMessage; 
     const char *sqlStatement = "CREATE TABLLE IF NOT EXIST Users (Username TEXT PRIMARY KEY, PASSWORD TEXT, EMAIL TEXT, null PHONE TEXT, null WINS INTEGER, null LOSSES INTEGER, null BALANCE DECIMAL INTEGER"; 

     if(sqlite3_exec(_DB, sqlStatement, NULL, NULL, &errorMessage) != SQLITE_OK) { 
      //below creates a popup success message if necessary 
      UIAlertController * alert= [UIAlertController 
              alertControllerWithTitle:@"Success" 
              message:@"Table created" 
              preferredStyle:UIAlertControllerStyleAlert]; 

      UIAlertAction* ok = [UIAlertAction 
           actionWithTitle:@"OK" 
           style:UIAlertActionStyleDefault 
           handler:^(UIAlertAction * action) 
           { 
            [alert dismissViewControllerAnimated:YES completion:nil]; 

           }]; 

      [alert addAction:ok]; 
      [self presentViewController:alert animated:YES completion:nil]; 
     } 
     sqlite3_close(_DB); 
    } 
    else { 
     //below creates a popup error message if necessary 
     UIAlertController * alert= [UIAlertController 
             alertControllerWithTitle:@"Error" 
             message:@"Unable to create table" 
             preferredStyle:UIAlertControllerStyleAlert]; 

     UIAlertAction* ok = [UIAlertAction 
          actionWithTitle:@"OK" 
          style:UIAlertActionStyleDefault 
          handler:^(UIAlertAction * action) 
          { 
           [alert dismissViewControllerAnimated:YES completion:nil]; 

          }]; 

     [alert addAction:ok]; 
     [self presentViewController:alert animated:YES completion:nil]; 
    } 
} 

}

+0

Извините за любую путаницу, просто для того, чтобы уточнить, что это мой код для создания БД. Я считаю, что в этом проблема, поскольку она говорит, что таблица «Пользователи» не создается при попытке запустить мою вставку. – dgelinas21

+0

где вы работаете? на симуляторе? 1. попытаться сделать чистую сборку и удаление приложения и запустить снова? 2. Если проблема все еще существует, попробуйте запустить запрос выбора перед обновлением, чтобы узнать, существует ли имя таблицы? –

ответ

0

Пожалуйста, внимательно проверьте ваше создание таблицы SQL, есть некоторые вопросы, которые я нашел с SQL:

  1. СОЗДАТЬ TABLLE (должно быть TABLE)
  2. Недостающих закрытия скобки в конце SQL.
  3. ЕСЛИ НЕ EXIST (должно быть СУЩЕСТВУЕТ)
  4. null должно быть указано в конце декларации поля. например, PHONE TEXT NULL

Почему бы не попробовать и использовать FMDB, который является одним из наиболее популярной библиотеки для борьбы с SQLite в OC. И вам не нужно использовать низкоуровневый код C для обработки SQLite.

+0

Спасибо за помощь! Я довольно новичок в приложениях IOS, я взгляну на FMDB. – dgelinas21

Смежные вопросы