Click here to Skip to main content
Click here to Skip to main content

DarkSide SQL Mini Version 1, The embedded database

By , 23 Mar 2006
 

Introduction

Providing local data storage in an application is a real problem faced by many a C++ programmer. To avoid getting oneself confused with low-level file handling routines and chores like data indexing, most programmers tend to use commercial database systems even for minimum data handling purposes. If your application doesn't need the capabilities of a complete RDBMS server, then a small and efficient database library that plugs into your source code will seem an interesting solution. DarkSide SQL Mini is an effort to create such a library. You can take this as a beta release and I want developers to test this code and report bugs before the stable release. You may find even this beta release useful in many of your projects. The best thing about DarkSide SQL Mini is that, unlike other embedded database libraries, you don't have to learn a new set of APIs. It provides a subset of SQL that you can use to define schemas and manipulate data. All you have to learn to use are two classes (Database and ResultSet) and two member functions (execute() and executeQuery())!. Everything else is plain SQL.

Using the code

DarkSide SQL Mini is a source code library. Copy all CPP files in the \dsqlm_1\cpp folder to your projects working directory, add the \dsqlm_1\include directory to your include path, link your object code with dsqlm_1\libdb41s.lib and you are done. You have a nice database system embedded in your application. Now on to some SQL lessons...

First include dsqlm.h in your CPP file:

#include "dsqlm.h"
using namespace dsqlm;

Next create a database object:

Database db("zoo");

This will create the folder zoo, if it does not exist. To create a table, call the CREATE TABLE command.

db.execute("CREATE TABLE animals(name varchar(40) indexed,age int,dob date)");

Data is inserted using the INSERT command:

db.execute("INSERT INTO animals VALUES('Joe',2,'2001-2-20')");

SELECT command is used to search and retrieve data:

ResultSet rslt = db.executeQuery("SELECT * FROM animals WHERE age > 1");
while(rslt.next()) {
  cout << rslt.getString(1) << rslt.getString(3) << endl;
}

The above code will print the name and date of birth of all animals whose age is above 1. In addition to these commands, DarkSide SQL Mini supports DELETE, DROP TABLE, DROP DATABASE and OPTIMIZE commands. The installation contains detailed documentation on the library.

In the demo code, you will find a complete working program that demonstrates the use of various DarkSide SQL commands. Follow the instructions in DarkSide SQL Mini Help files to compile this code.

If you need a complete RDBMS server, you can download DarkSide SQL server for free.

History

  • Created: Nov 23rd, 2003
  • Updated: Nov 27th, 2003: Fixed bug in logical expression parsing.

License

This article, along with any associated source code and files, is licensed under The BSD License

About the Author

AnOldGreenHorn
India India
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralOne Kind Information SirmemberGovindanHari3 Apr '09 - 2:17 
QuestionAgain bugs sir....memberGovindanHari3 Apr '09 - 2:09 
AnswerRe: Again bugs sir....memberVijay Mathew Pandyalakal3 Apr '09 - 2:24 
GeneralRe: Again bugs sir....memberGovindanHari4 Apr '09 - 2:58 
GeneralRe: Again bugs sir....memberGovindanHari4 Apr '09 - 3:47 
Generalerror LNK2005memberGovindanHari2 Apr '09 - 21:37 
GeneralRe: error LNK2005memberVijay Mathew Pandyalakal2 Apr '09 - 21:56 
Questionerror C2059memberGovindanHari2 Apr '09 - 6:14 
AnswerRe: error C2059memberVijay Mathew Pandyalakal2 Apr '09 - 19:27 
Questioncompile errormemberGovindanHari2 Apr '09 - 4:58 
AnswerRe: compile errormemberVijay Mathew Pandyalakal2 Apr '09 - 19:23 
GeneralSqlitemembernewmodel27 Mar '06 - 4:20 
GeneralRe: Sqlite [modified]memberVijay Mathew Pandyalakal27 Mar '06 - 15:47 
GeneralRe: Sqlitemembernewmodel27 Mar '06 - 21:36 
GeneralRe: SqlitememberVijay Mathew Pandyalakal28 Mar '06 - 15:25 
Generalsource code of the library: libdb41s.libmemberozmanothman9 Nov '04 - 16:04 
GeneralRe: source code of the library: libdb41s.libmemberVijay Mathew Pandyalakal9 Nov '04 - 16:35 
GeneralRe: source code of the library: libdb41s.libmemberozmanothman10 Nov '04 - 3:50 
Generalwarning massagememberozmanothman6 Nov '04 - 9:37 
GeneralRe: warning massagememberVijay Mathew Pandyalakal7 Nov '04 - 16:49 
Question.net assembly?memberarachno5 Nov '04 - 7:39 
AnswerRe: .net assembly?memberVijay Mathew Pandyalakal5 Nov '04 - 16:36 
GeneralCompile errormemberChong Ching Yu6 Jan '04 - 20:16 
GeneralRe: Compile errormemberVijay Mathew Pandyalakal8 Jan '04 - 0:42 
GeneralRe: Compile errormemberChong Ching Yu8 Jan '04 - 16:31 

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

Permalink | Advertise | Privacy | Mobile
Web03 | 2.6.130516.1 | Last Updated 23 Mar 2006
Article Copyright 2003 by AnOldGreenHorn
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid