Click here to Skip to main content
11,705,617 members (53,384 online)
Click here to Skip to main content

DarkSide SQL Mini Version 1, The embedded database

, 23 Mar 2006 BSD 122.8K 2.7K 56
Rate this:
Please Sign up or sign in to vote.
An embedded database library in C++.

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

Share

About the Author

No Biography provided

You may also be interested in...

Comments and Discussions

 
AnswerRe: compile error Pin
Vijay Mathew Pandyalakal2-Apr-09 19:23
memberVijay Mathew Pandyalakal2-Apr-09 19:23 
GeneralSqlite Pin
newmodel27-Mar-06 4:20
membernewmodel27-Mar-06 4:20 
GeneralRe: Sqlite [modified] Pin
Vijay Mathew Pandyalakal27-Mar-06 15:47
memberVijay Mathew Pandyalakal27-Mar-06 15:47 
GeneralRe: Sqlite Pin
newmodel27-Mar-06 21:36
membernewmodel27-Mar-06 21:36 
GeneralRe: Sqlite Pin
Vijay Mathew Pandyalakal28-Mar-06 15:25
memberVijay Mathew Pandyalakal28-Mar-06 15:25 
Generalsource code of the library: libdb41s.lib Pin
ozmanothman9-Nov-04 16:04
memberozmanothman9-Nov-04 16:04 
GeneralRe: source code of the library: libdb41s.lib Pin
Vijay Mathew Pandyalakal9-Nov-04 16:35
memberVijay Mathew Pandyalakal9-Nov-04 16:35 
GeneralRe: source code of the library: libdb41s.lib Pin
ozmanothman10-Nov-04 3:50
memberozmanothman10-Nov-04 3:50 
Generalwarning massage Pin
ozmanothman6-Nov-04 9:37
memberozmanothman6-Nov-04 9:37 
GeneralRe: warning massage Pin
Vijay Mathew Pandyalakal7-Nov-04 16:49
memberVijay Mathew Pandyalakal7-Nov-04 16:49 
Question.net assembly? Pin
arachno5-Nov-04 7:39
memberarachno5-Nov-04 7:39 
AnswerRe: .net assembly? Pin
Vijay Mathew Pandyalakal5-Nov-04 16:36
memberVijay Mathew Pandyalakal5-Nov-04 16:36 
GeneralCompile error Pin
Chong Ching Yu6-Jan-04 20:16
memberChong Ching Yu6-Jan-04 20:16 
GeneralRe: Compile error Pin
Vijay Mathew Pandyalakal8-Jan-04 0:42
memberVijay Mathew Pandyalakal8-Jan-04 0:42 
GeneralRe: Compile error Pin
Chong Ching Yu8-Jan-04 16:31
memberChong Ching Yu8-Jan-04 16:31 
GeneralRe: Compile error Pin
Vijay Mathew Pandyalakal9-Jan-04 3:33
memberVijay Mathew Pandyalakal9-Jan-04 3:33 
QuestionDarkSide Server Link? Pin
lbills6-Jan-04 2:11
memberlbills6-Jan-04 2:11 
AnswerRe: DarkSide Server Link? Pin
Vijay Mathew Pandyalakal8-Jan-04 0:39
memberVijay Mathew Pandyalakal8-Jan-04 0:39 
Generalcompile errors Pin
Rene De La Garza2-Jan-04 5:45
memberRene De La Garza2-Jan-04 5:45 
GeneralRe: compile errors Pin
Vijay Mathew Pandyalakal3-Jan-04 0:49
memberVijay Mathew Pandyalakal3-Jan-04 0:49 
GeneralCompile Error Pin
Gilfrog13-Dec-03 9:29
memberGilfrog13-Dec-03 9:29 
GeneralRe: Compile Error Pin
Vijay Mathew Pandyalakal18-Dec-03 1:46
memberVijay Mathew Pandyalakal18-Dec-03 1:46 
QuestionWhere? Pin
Dewey Vozel10-Dec-03 3:20
memberDewey Vozel10-Dec-03 3:20 
AnswerRe: Where? Pin
Vijay Mathew Pandyalakal11-Dec-03 18:06
memberVijay Mathew Pandyalakal11-Dec-03 18:06 
GeneralRe: Where? Pin
Dewey Vozel12-Dec-03 2:38
memberDewey Vozel12-Dec-03 2:38 
QuestionWhat is the source of the library? Pin
Bill Seddon9-Dec-03 21:00
memberBill Seddon9-Dec-03 21:00 
AnswerRe: What is the source of the library? Pin
Vijay Mathew Pandyalakal11-Dec-03 18:10
memberVijay Mathew Pandyalakal11-Dec-03 18:10 
GeneralRe: What is the source of the library? Pin
TimSmith_S12-Jan-04 9:04
sussTimSmith_S12-Jan-04 9:04 
GeneralRe: What is the source of the library? Pin
Vijay Mathew Pandyalakal12-Jan-04 17:18
memberVijay Mathew Pandyalakal12-Jan-04 17:18 
AnswerRe: What is the source of the library? Beware License Pin
Neville Franks9-Mar-04 23:39
memberNeville Franks9-Mar-04 23:39 
GeneralLink not accessible Pin
Perry Bruins2-Dec-03 19:35
memberPerry Bruins2-Dec-03 19:35 
GeneralUNICODE support Pin
João Paulo Figueira1-Dec-03 4:32
memberJoão Paulo Figueira1-Dec-03 4:32 
GeneralRe: UNICODE support Pin
Vijay Mathew Pandyalakal1-Dec-03 18:12
memberVijay Mathew Pandyalakal1-Dec-03 18:12 
GeneralRe: UNICODE support Pin
Johann Gerell1-Dec-03 22:50
memberJohann Gerell1-Dec-03 22:50 
GeneralRe: UNICODE support Pin
Vijay Mathew Pandyalakal4-Dec-03 0:29
memberVijay Mathew Pandyalakal4-Dec-03 0:29 
GeneralRe: UNICODE support Pin
Uwe Keim4-Dec-03 22:21
sitebuilderUwe Keim4-Dec-03 22:21 
GeneralA similar library exists: SQLite - An Embeddable SQL Database Engine Pin
Olan Patrick Barnes1-Dec-03 4:29
memberOlan Patrick Barnes1-Dec-03 4:29 
GeneralReally contructive ! Pin
emilio_g1-Dec-03 22:02
memberemilio_g1-Dec-03 22:02 
GeneralRe: Really contructive ! Pin
Olan Patrick Barnes2-Dec-03 2:38
memberOlan Patrick Barnes2-Dec-03 2:38 
GeneralRe: Really contructive ! Pin
Vijay Mathew Pandyalakal4-Dec-03 0:33
memberVijay Mathew Pandyalakal4-Dec-03 0:33 
GeneralRe: Really contructive ! Pin
Anonymous4-Dec-03 7:29
sussAnonymous4-Dec-03 7:29 
GeneralRe: Really contructive ! Pin
Paolo Vernazza25-Jan-04 2:08
memberPaolo Vernazza25-Jan-04 2:08 
GeneralRe: Really contructive ! Pin
emilio_g25-Jan-04 20:44
memberemilio_g25-Jan-04 20:44 
GeneralDon't be put off by misunderstandings Pin
dog_spawn5-Dec-03 3:16
memberdog_spawn5-Dec-03 3:16 
GeneralRe: A similar library exists: SQLite - An Embeddable SQL Database Engine Pin
David Wulff8-Dec-03 22:01
memberDavid Wulff8-Dec-03 22:01 
GeneralRe: A similar library exists: SQLite - An Embeddable SQL Database Engine Pin
fwp2-Mar-04 22:19
sussfwp2-Mar-04 22:19 

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

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

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