Archive
SQLiteWrappers v1.01
Just to let everyone know that v1.01 of SQLiteWrappers has been released.
- CValue methods have been made const where appropriate
- CStatement methods have been made const where appropriate
- Implemented a CStatement::ExecRowset method which provides STL iterator accessor to the returned rowset. The class returned from ExecRowset is SQLite3::CRowset which providess an input STL iterator to traverse though all the rows returned by SQLite3::CStatement::Step. Each row as returned from the CRowset iterator is represented by a SQLite3::CRow. Finally SQLite3::CRow provides a random access STL iterator to all the columns returning a SQLite3::CValue
- Two additional methods called SQLite3::CDB::ExecRowset and SQLite3::CDB::ExecRowset16 are provided which encapsulate SQLite3::CStatement::ExecRowset which do not require any parameter binding. The output parameter from these two methods is a SQLite3::CRowset2 which contains an SQLite3::CStatement as a member variable.
- Addition of a "SQLITE3WRAPPERS_LOCAL_INCLUSION" pre-processor define which if set will cause SQLite3 to be pulled in via a #include "SQLite3.h" instead of via #include <SQLite3.h>. This allows SQLiteWrappers to be included in projects which statically compile to SQLite3 from the same directory as your application code.
SQLiteWrappers v1.0
Just to let everyone know that v1.0 of SQLiteWrappers has been released. This is a set of C++ classes to encapsulate SQLite v3. The code below shows a simple example to open a database and add a row to a table called "tblTest" with one text column (without any error handling!):
SQLite3:CDB db;
db.Open16(L"database.db");
db.Exec("INSERT INTO tblTest VALUES (‘sample text’)
Here’s a further example to run a simple parameterized query to do an INSERT on the previously mentioned "tblTest":
SQLite3::CStatment stmt;
stmt.Prepare16v2(db, L"INSERT INTO tblTest VALUES(?)");
char* szData = "More Sample Text";
stmt.Bind(1, szData, strlen(szData));
stmt.Step();
The classes provided are: SQLite3::CDB, SQLite3::CValue, SQLite3::CStatement, SQLite3::CValue2, SQLite3::CBlob & SQLite3::CPtr.
CDB provides a class based encapsulation of a database in SQLite aka a sqlite3* pointer.
CValue represents a value stored in a database, or in other words a sqlite3_value* pointer.
CStatement provides a statement or in other words a sqlite3_stmt* pointer.
CValue2 represents a combined CValue and CStatement. This is useful when you want to have a CValue instance with the same lifetime as a CStatement.
CBlob represents a blob in SQLite or in other words a sqlite3_blob* pointer.
Finally CPtr encapsulates something which needs to be freed using sqlite3_free as well as printf style formatting of SQL Strings using sqlite3_vmprint.
CExceptionLogger v1.11
Just to let everyone know that v1.11 of CExceptionLogger has been released. Updates for this version include:
- Updated copyright details.
- The code now only supports VC 2005 or later.
- Updated project settings to more modern defaults.
- Code now compiles cleanly using Code Analysis (/analyze)
- Fixed a bug in reporting of the SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentType value.
- The class and DLL now allows the exception handler to be tested in debug mode through the use of XCPTHLRGenerateSampleException and CExceptionLogger::GenerateSampleException
- Fixed a file handle leak in CExceptionLogger::GenerateMiniDump.
- The Log directory and not the Log file name is now read from the registry.
- The default flag values and the location of the log directory are now read from HKEY_CURRENT_USER instead of HKEY_LOCAL_MACHINE. This helps avoid Registry virtualization issues on Windows Vista or later.
- Fixed issues in the format string when using a MEMORYSTATUS struct with GlobalMemoryStatus.
- The Processor architecture as returned from GetSystemInfo is now logged.
- The Allocation granularity as returned from GetSystemInfo is now logged.
- The Processor level as returned from GetSystemInfo is now logged.
- The Processor revision as returned from GetSystemInfo is now logged.
- The active processor mask as returned from GetSystemInfo is now logged.
- LogSystemDetails now supports logging information about Windows Server 2008, 2008 R2, 2012, Vista, 7 and 8.
- More OSVERSIONINFOEX::wSuiteMask values are now logged
- LogSystemDetails now support GR_GDIOBJECTS_PEAK
- LogSystemDetails now supports GR_USEROBJECTS_PEAK
- LogSystemDetails now supports IsProcessorFeaturePresent(PF_CHANNELS_ENABLED)
- LogSystemDetails now supports IsProcessorFeaturePresent(PF_XSAVE_ENABLED)
- The data logged by calling GetNativeSystemInfo is now consistent with the same set of data which GetSystemInfo reports.
- LogSystemDetails now logs details for all the CPUs on the computer
- LogSystemDetails now supports BuildGUID, BuildLab, BuildLabEx & InstallDate values from HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
- Code now displays detailed information about multi monitor setups
- The code now correctly reports 24 and 32 bit color depths via WTS_CLIENT_DISPLAY when in a terminal services environment.
- Fixed a problem getting a function pointer to WTSGetActiveConsoleSessionId function.
- SetDirectory method now supports auto expansion of system environment variables
- Fixed a bug in the setup of the "IMAGEHLP_LINE64 LineInfo" prior to the call to SymGetLineFromAddr64. Thanks to Michael Schaart for reporting this issue.
- WTSInitialProgram and WTSSessionId details are now displayed when in a terminal services environment.