Archive for June, 2012

SQLiteWrappers v1.01

June 29, 2012 Comments off

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.
Categories: Web Site Updates

SQLiteWrappers v1.0

June 13, 2012 Comments off

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.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));

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.

Categories: Web Site Updates

CExceptionLogger v1.11

June 4, 2012 4 comments

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.
Categories: Web Site Updates