2012-11-06 19 views
6

これは簡単な質問だと思いますが、私はFMDBのgitページで答えを見つけませんでした。 コマンドを使用する場合:表がすでに存在しているかどうかを確認するためにSQLite FMDB作成テーブル - 初心者iOS

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

はFMDBまたはSQLiteの検証のいくつかの種類を作るんか?

複数のテーブルを作成せずに、このメソッドをクラス初期化子で呼び出すことはできますか?

愚かな質問の場合は申し訳ありません。

答えて

0

FMDBにCREATE TABLEコマンドを与えるたびに、内部的にそれを対応するSQLiteクエリに変換します(これについては心配する必要はありません)。

はSQLiteのウェブサイト上で与えられた公式ドキュメントを1として、それは述べて:

"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."

をので、あなたは、同じ名前を持つ別のテーブルを作成しようとした場合、SQLiteのはというエラーがスローされます。

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

次のエラーが発生します。
エラー:テーブルTEST_TABLEはすでに、だから、テーブルの存在のためにSQLiteのチェックを

存在し、それが同じ名前を持つ別のテーブルを許可しません。

詳細については、ドキュメントを参照してください。あなたが存在するかどうかを確認することができ、

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

か::

select sql from SQLITE_MASTER where name = 'test_table' 

そして、あなたが取得するかどうかを確認

ソースhttp://www.sqlite.org/lang_createtable.html

+1

詳細な回答ありがとうございます。 – pedros

+0

助けになるのはうれしいです。 –

14

別の解決策はにあなたのクエリを変更することです結果は戻ってくる。