1

ODB データベースを新規作成しようとしましたが、db が成功xxx.dbしても存在しない場合があります。new以下のコードでは、例外をキャッチできませんが、入ることはできますif(!_file)

string dbFile = getPalBundle()->getFileStorageProvider()->getDocumentsPath(userId + "/xxx.db");

  auto db = std::shared_ptr<odb::sqlite::database>(new odb::sqlite::database(dbFile, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_SHAREDCACHE | SQLITE_OPEN_FULLMUTEX, false));


    if(db == nullptr)
    {
        ret = false;
    }

    // check database avalible
    try {
        db->schema_version();
    } catch (...) {
        DLOG(kTagDaoFactory, "Datase file damaged, logout");
        ret = false;
    }

    fstream _file;
    _file.open(dbFile, ios::in);
    if (!_file) {
        ret = false;
        DLOG(kTagDaoFactory, "Data base file no exist, logout");
    }

何が起こるかわかりません、誰か助けてくれませんか?前もって感謝します!

4

1 に答える 1

0

ドキュメントSQLITE_OPEN_CREATEは次のように書かれています:

データベースが … まだ存在しない場合は作成されます。

データベース ファイルは、実際に必要な場合 (新しいデータベースのページ サイズなどのパラメーターを設定できるようにするため) にのみ書き込まれるため、完全に空のデータベースの場合、ファイルがない可能性があります。

于 2016-06-30T07:37:26.127 に答える