シミュレーターで iOS プログラムを実行していますが、このエラーが発生します
'ISDatabaseSQLiteException'、理由: 'ステートメントの実行に失敗しました: 'create table GroceryItem(primaryKey integer primary key autoincrement, name text NOT NULL, number integer NOT NULL)' with message: table GroceryItem already exists'
これは、AppDelegate.m で使用しているコードです。
self.database = [[[ISDatabase alloc] initWithFileName:@"db20121207.sqlite"] autorelease];
if(![[database tableNames] containsObject:@"GroceryItem"])
{
[database executeSql:@"create table GroceryItem(primaryKey integer primary key autoincrement, name text NOT NULL, number integer NOT NULL)"];
[database executeSql:@"insert into GroceryItem (name, number) values('apple', 5)"];
[database executeSql:@"insert into GroceryItem (name, number) values('zuoyou', 3)"];
}
else
{
[database executeSql:@"insert into GroceryItem (name, number) values('apple', 5)"];
[database executeSql:@"insert into GroceryItem (name, number) values('zuoyou', 3)"];
}
テーブル名をリストするこのメソッドがありますsqlite_master
- (NSArray *) tables
{
return [self executeSql:@"select * from sqlite_master where type = 'table'"];
}
- (NSArray *) tableNames
{
NSLog(@"%@", [[self tables] valueForKey:@"name"] );
NSLog(@"%u", [[[self tables] valueForKey:@"name"] count] );
return [[self tables] valueForKey:@"name"];
}
しかし、コンソールが表示されます
GroceryList[7439:c07] ( "sqlite_sequence" )
2012-12-10 16:59:40.305 食料品リスト[7439:c07] 1
テーブルのみを取得しsqlite_sequence
、カウントは 1 です。上記の例外から、「テーブル GroceryItem は既に存在します」と表示されました