From ab012273ded867eaeded55c6acb7165f741b7055 Mon Sep 17 00:00:00 2001 From: Patrick Servello Date: Wed, 1 Jan 2020 13:22:40 -0600 Subject: [PATCH] Added example for getHeaderInfo() (#251) --- examples/example1/main.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/examples/example1/main.cpp b/examples/example1/main.cpp index d2c98dd..707b008 100644 --- a/examples/example1/main.cpp +++ b/examples/example1/main.cpp @@ -89,6 +89,43 @@ int main () std::cout << "SQlite3 version " << SQLite::VERSION << " (" << SQLite::getLibVersion() << ")" << std::endl; std::cout << "SQliteC++ version " << SQLITECPP_VERSION << std::endl; + //////////////////////////////////////////////////////////////////////////// + // Inspect a database via SQLite header information + try + { + SQLite::Header exampleHeader = SQLite::Database::getHeaderInfo(filename_example_db3); + + // Print values for all header fields + // Official documentation for fields can be found here: https://www.sqlite.org/fileformat.html#the_database_header + std::cout << "Magic header string: " << exampleHeader.headerStr << std::endl; + std::cout << "Page size bytes: " << exampleHeader.pageSizeBytes << std::endl; + std::cout << "File format write version: " << exampleHeader.fileFormatWriteVersion << std::endl; + std::cout << "File format read version: " << exampleHeader.fileFormatReadVersion << std::endl; + std::cout << "Reserved space bytes: " << exampleHeader.reservedSpaceBytes << std::endl; + std::cout << "Max embedded payload fraction " << exampleHeader.maxEmbeddedPayloadFrac << std::endl; + std::cout << "Min embedded payload fraction: " << exampleHeader.minEmbeddedPayloadFrac << std::endl; + std::cout << "Leaf payload fraction: " << exampleHeader.leafPayloadFrac << std::endl; + std::cout << "File change counter: " << exampleHeader.fileChangeCounter << std::endl; + std::cout << "Database size pages: " << exampleHeader.databaseSizePages << std::endl; + std::cout << "First freelist trunk page: " << exampleHeader.firstFreelistTrunkPage << std::endl; + std::cout << "Total freelist trunk pages: " << exampleHeader.totalFreelistPages << std::endl; + std::cout << "Schema cookie: " << exampleHeader.schemaCookie << std::endl; + std::cout << "Schema format number: " << exampleHeader.schemaFormatNumber << std::endl; + std::cout << "Default page cache size bytes: " << exampleHeader.defaultPageCacheSizeBytes << std::endl; + std::cout << "Largest B tree page number: " << exampleHeader.largestBTreePageNumber << std::endl; + std::cout << "Database text encoding: " << exampleHeader.databaseTextEncoding << std::endl; + std::cout << "User version: " << exampleHeader.userVersion << std::endl; + std::cout << "Incremental vaccum mode: " << exampleHeader.incrementalVaccumMode << std::endl; + std::cout << "Application ID: " << exampleHeader.applicationId << std::endl; + std::cout << "Version valid for: " << exampleHeader.versionValidFor << std::endl; + std::cout << "SQLite version: " << exampleHeader.sqliteVersion << std::endl; + } + catch (std::exception& e) + { + std::cout << "SQLite exception: " << e.what() << std::endl; + return EXIT_FAILURE; // unexpected error : exit the example program + } + //////////////////////////////////////////////////////////////////////////// // Very basic first example (1/7) : try