Aqlier/ 5月 13, 2019/ Mac

Xcode 開発で、アプリ内で使用するsqlite3のDBがないとき(初回起動)、新規に作成する方法をまとめました。既にDBが存在していた場合、作成処理は迂回して処理は行いません。

個人的には、空のDBを用意して使用する方が開発・テストが楽です。

    //DBの存在チェック ない場合、CREATEする
    NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(
                          NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docsDir = dirPaths[0];

    _databasePath = [[NSString alloc]
                     initWithString: [docsDir stringByAppendingPathComponent:
                                      @"came.DB"]];

    NSFileManager *filemgr = [NSFileManager defaultManager];

    if ([filemgr fileExistsAtPath: _databasePath ] == NO)
    {
        const char *dbpath = [_databasePath UTF8String];

        if (sqlite3_open(dbpath, &_contactDB) == SQLITE_OK)
        {
            char *errMsg;
            const char *sql_stmt =
            "CREATE TABLE IF NOT EXISTS kanri 
(id INTEGER PRIMARY KEY AUTOINCREMENT,jan,sdate,come,gazou,
date,kahi,fil1,fil2,fil3,fil4,fil5) ";//tableのcreate

            if (sqlite3_exec(_contactDB, sql_stmt, NULL, NULL, 
&errMsg) != SQLITE_OK)
            {
                NSLog( @"作成失敗");
            }
            sqlite3_close(_contactDB);
        } else {
            NSLog( @"open・作成失敗");
        }
    }

起動後の確認

pathが深いので、探すのが困難でした。Macとネット接続したWindowsマシーンより「came.DB(今回作成DB)」をExplorerで検索しています。

データをsqlツールで確認すると、DB、テーブルが作成されていました。


表記上、先頭文字が大文字になっていますが、小文字でないとエラーになるものもあります。

0 0 投票
記事の評価

記事内容に関して、不明点・誤りがありましたらコメントをお願いします。

0 Comments
Inline Feedbacks
View all comments