2012-11-06 11 views
6

Myślę, że jest to proste pytanie, ale nie znalazłem odpowiedzi na stronie git FMDB. Podczas korzystania z polecenia:SQLite FMDB tworzenie tabeli - początkujący iOS

[database executeUpdate:@"create table T_table(name text primary key, age int)"]; 

ma FMDB lub SQLite zrobić jakąś weryfikację, czy tabela już istnieje?

Czy mogę wywołać tę metodę w inicjalizatorze klasy bez tworzenia więcej niż jednej tabeli?

Przepraszam, jeśli głupie pytanie.

Odpowiedz

0

Ilekroć podajesz komendę CREATE TABLE dla FMDB, to wewnętrznie konwertuje ją na odpowiednie zapytanie SQLite (dla którego nie musisz się martwić).

Zgodnie z oficjalnej dokumentacji podanej na stronie SQLite jest, stwierdza:

"It is usually an error to attempt to create a new table in a database that already contains a table, index or view of the same name."

Więc jeśli starają się utworzyć inną tabelę o tej samej nazwie, SQLite wygeneruje błąd mówiąc:

create table test_table (test_no NUMBER, test_name TEXT); //Table created 

/* Now, try creating the table again */ 
create table test_table (test_no NUMBER, test_name TEXT); 

Otrzymasz następujący błąd.
Błąd: istnieje już tabela test_table

Więc sprawdza SQLite na istnienie tabeli, to nie pozwoli inną tabelę o tej samej nazwie.

Ponownie, możesz zapoznać się z dokumentacją, aby uzyskać więcej informacji.

Źródłohttp://www.sqlite.org/lang_createtable.html

+1

Dziękuję za szczegółową odpowiedź. – pedros

+0

Cieszę się, że mogę pomóc. –

14

Innym rozwiązaniem jest zmienić zapytanie do:

create table if not exists test_table (test_no NUMBER, test_name TEXT); 

lub można sprawdzić istnienie z:

select sql from SQLITE_MASTER where name = 'test_table' 

i sprawdzić, czy masz wszelkie wyniki z powrotem.