0

私は XCode が初めてで、Sqlite3 を使用してデータベースにデータを保存したいと考えています。このメソッドがあるクラスのユーザーがいます。

-(void)createOrOpenDB
{
    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docPath = [path objectAtIndex:0];
    dbPathString = [docPath stringByAppendingPathComponent:@"users.db"];
    char *error;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    if([fileManager fileExistsAtPath:dbPathString] == NO)
    {
        const char *dbPath = [dbPathString UTF8String];
        if(sqlite3_open(dbPath, &userDB)==SQLITE_OK)
        {
            const char *sql_stmt = "CREATE TABLE IF NOT EXISTS USERS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, PASSWORD TEXT, CONFIRM TEXT, EMAIL TEXT)";
            sqlite3_exec(userDB, sql_stmt, NULL, NULL, &error);
            sqlite3_close(userDB);
        }
    }
}

しかし、別のテーブルを作成したい別のクラスもあります。ただし、このメソッドはデータベースが既に存在することを示しているため、機能しません。

別のクラスでそのデータベースを開いて新しいテーブルを作成するにはどうすればよいですか?

4

1 に答える 1

0

sqlite を使用していると仮定すると、データベースを開くか作成する単一のメソッドを使用する方が適切です。データベースが作成されると、スキーマ全体が一度に作成されます。これで、すべてのクラスが単一のメソッドを呼び出すことができます。

これにより、現在および後で物事がはるかに簡単になります。途中で計画が変わるかもしれません。この 1 つのメソッドを記述して、必要に応じてスキーマを更新することもできます。

于 2012-10-21T16:28:05.360 に答える