Click here to Skip to main content
15,861,125 members
Articles / Database Development / SQL Server

SQLite3 MFC Wrapper

Rate me:
Please Sign up or sign in to vote.
4.39/5 (13 votes)
29 Dec 2005CPOL4 min read 252.9K   8.6K   74   55
A SQLite3 MFC wrapper with Unicode/Pocket PC 2003 support.

Introduction

Here is another wrapper for the famous SQLite3 database engine. While there are several other wrappers available here at Code Project, I don't believe they support MFC/Unicode or have the results tested on a Pocket PC.

The wrapper source code is based on the SQLiteWrapper source produced by rene.nyffenegger@adp-gmbh.ch. I altered the original source while packaging it for use with Microsoft MFC. My primary objective in this exercise was to make the wrapper suitable for both MCBS and Unicode because Unicode is native to the Pocket PC. There are four key differences between this wrapper and the author's original source.

  • First, all the instances of std::string were converted to Microsoft's generic string pointers using LPCTSTR. This should be familiar to developer's accustomed to working with MFC. This also means that you should rely heavily on the Microsoft TEXT or _T macros for hard-coded character strings should you wish to maintain portability between the desktop and the Pocket PC.
  • Second, I have changed the class SQLiteStatement to CSqlStatement and SQLiteWrapper to CDbSQLite. This was primarily a matter of preference since most MFC developer's recognize Microsoft's conventions for the "Cx" nomenclature.
  • Third, I removed exception handling from the wrapper. Windows CE does not support the traditional try, catch and throw paradigm so you are basically on your own with respect to error handling.
  • Finally, I have added the header SQLite3i.h with typedefs to the various sqlite3.h functions. These type definitions are "internal" accessors to the sqlite3 functions conditionally utilizing either the UTF-8 or UTF-16 variation during compilation. For your entertainment, I incorporated a pragma in the header to inform you when you are compiling Unicode or MCBS.

Care and feeding

The test programs provided here are simple MFC dialog applications incorporating two buttons, an edit box and a list control. The "Create" button is used to populate the database with three entries. The "review" button is used to populate the list control with the database records. It is acceptable to click the "Create" button more than once. You may even wish to do so to observe any errors reported. The edit box is used simply for status info.

This code was tested on a Windows desktop and on a Pocket PC. As part of my test, I moved the database created by the Pocket PC to my desktop and then reviewed it using the desktop application.

Free with your purchase

The ZIP file contains the source code for the altered wrapper as well as code for both a desktop and Pocket PC application. The projects that I have provided include:

  1. Project to create the w32SQLite3.dll.
  2. Project to create the wceSQLite3.dll.
  3. Project to create the desktop test application.
  4. Project to create the Pocket PC test application.

As you might gather from this list, you must first build the DLL files for use with the test applications that I have provided. In order to do this, you should obtain the source from the SQLite Download Page for the W32 DLL and deposit it into the sqlite3 directory. You should obtain the source for the WCE DLL from the SQLite for Windows CE site and deposit it into the wince directory.

Once you have constructed the two DLL files, move them and their corresponding .lib files to the LIB directory. The application projects will search for these files in that location.

Warnings and disclaimers

  • All of these projects assume that you are experienced with MFC development and proficient in navigating Microsoft's IDE to configure the complier.
  • All of the projects provided here are dependent upon the directory structure stored in the zip file. If you deviate from this structure, please do not submit reports that " compilation fails because the compiler cannot locate the applicable header files".
  • The desktop solutions were created using Visual Studio 2003, so please don't submit questions informing me that you cannot load the project with a prior version of VC or a different compiler.
  • The CE projects were created using eMbedded Visual C++ v4.00, so please don't submit questions informing me that you cannot load the project using a different compiler.
  • The sample code is pure MFC so please don't submit comments about any notions you may have about portability or code bloat. The whole purpose here was to use SQLite on Windows CE using MFC.
  • This code was tested on a Win2K desktop and a Symbol PDT-8100 with Microsoft Pocket PC Version 4.20.0. Your results on anything less are anybody's guess.
  • These projects were compiled with the source code from SQLite3 Version 3.2.8 and SQLite for Windows CE Version 3.2.2. Problems compiling with future versions are most likely due to missing source files that should be included in the project.

Film credits

I selected Rene's SQLite Wrapper as the starting point for this exercise because of it's sheer simplicity. In other words, any complaints about missing functionality will fall upon deaf ears since you are most certainly welcome to port CppSQLite or Darkside SQL to Pocket PC and then post your results to Code Project for everyone's benefit.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
Questionerror in CSqlStatement::Bind(int, CString) Pin
Member 127060668-Apr-17 4:44
Member 127060668-Apr-17 4:44 
QuestionNeed Help UNICODE Pin
Nazim Iqbal5-Oct-12 13:31
Nazim Iqbal5-Oct-12 13:31 
GeneralMy vote of 5 Pin
ThatsAlok3-Jun-12 2:26
ThatsAlok3-Jun-12 2:26 
QuestionBlobs Pin
BigAlBuchanan27-Jun-11 22:05
professionalBigAlBuchanan27-Jun-11 22:05 
GeneralMemory leaks in "Download demo project w/source" that you provided [modified] Pin
wcqq1232-Dec-10 21:31
wcqq1232-Dec-10 21:31 
GeneralAnother bug Pin
thinksrc4-Nov-10 22:19
thinksrc4-Nov-10 22:19 
GeneralGood Pin
loyal ginger19-Nov-09 10:41
loyal ginger19-Nov-09 10:41 
GeneralDeployment errors: unable to start program Pin
susanaferenc10-Jun-09 20:33
susanaferenc10-Jun-09 20:33 
GeneralRe: Deployment errors: unable to start program Pin
midnightEngineer11-Jun-09 2:17
midnightEngineer11-Jun-09 2:17 
GeneralRe: Deployment errors: unable to start program Pin
midnightEngineer11-Jun-09 2:21
midnightEngineer11-Jun-09 2:21 
GeneralRe: Deployment errors: unable to start program Pin
susanaferenc11-Jun-09 7:04
susanaferenc11-Jun-09 7:04 
GeneralSQLite to connect to MS SQL Server Pin
Jesper Rahbek1-May-09 0:16
Jesper Rahbek1-May-09 0:16 
GeneralRe: SQLite to connect to MS SQL Server Pin
midnightEngineer1-May-09 0:46
midnightEngineer1-May-09 0:46 
GeneralRe: SQLite to connect to MS SQL Server Pin
Jesper Rahbek3-May-09 22:41
Jesper Rahbek3-May-09 22:41 
GeneralRe: SQLite to connect to MS SQL Server [modified] Pin
midnightEngineer4-May-09 0:47
midnightEngineer4-May-09 0:47 
GeneralSQLite v3.4.0 Pin
Floppe15-Jul-07 21:26
Floppe15-Jul-07 21:26 
GeneralRe: SQLite v3.4.0 Pin
midnightEngineer16-Jul-07 4:31
midnightEngineer16-Jul-07 4:31 
QuestionSQLITE3.DLL Pin
usf_azi9-Feb-07 8:01
usf_azi9-Feb-07 8:01 
AnswerRe: SQLITE3.DLL Pin
midnightEngineer13-Feb-07 8:13
midnightEngineer13-Feb-07 8:13 
Generaltext limit Pin
charoon28-Jan-07 10:21
charoon28-Jan-07 10:21 
GeneralRe: text limit [modified] Pin
midnightEngineer30-Jan-07 2:41
midnightEngineer30-Jan-07 2:41 
GeneralRe: text limit Pin
charoon30-Jan-07 19:06
charoon30-Jan-07 19:06 
GeneralRe: text limit Pin
charoon5-Feb-07 19:13
charoon5-Feb-07 19:13 
GeneralRe: text limit Pin
midnightEngineer13-Feb-07 9:34
midnightEngineer13-Feb-07 9:34 
GeneralRe: text limit Pin
midnightEngineer13-Feb-07 9:25
midnightEngineer13-Feb-07 9:25 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.