iPhoneでSQLiteデータベースを作成するためにFMDBを使用しています。次の形式の initial.sql があります。
CREATE TABLE Abc ... ;
CREATE TABLE Def ... ;
ファイルを NSString にロードして実行することで、これをロードします
NSString * str = // string from file initial.sql
[db executeUpdate: str];
これは成功しますが、後で失敗します:
no such table: Def
2 番目のステートメントが呼び出されていないことは明らかです。すべてのクエリが呼び出されるようにするにはどうすればよいですか?
SQLite のドキュメントによると、「ルーチン sqlite3_prepare_v2()、sqlite3_prepare()、sqlite3_prepare16()、sqlite3_prepare16_v2()、sqlite3_exec()、および sqlite3_get_table() は、セミコロンである SQL ステートメント リスト (sql-stmt-list) を受け入れます。ステートメントの分離されたリスト。」
したがって、これはすべて機能するはずです。