Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Mobile

Symbian Database Components


Limitations

The good news is that the Symbian DBMS implementation has a tiny footprint. In spite of the tiny footprint, important features such as the ability to build and maintain multiple indexes on tables are supported. The bad news is there are some major limitations that go along with that. Probably the biggest is the lack of support for joins. If you need joins, use one of the third-party implementations, being aware of the larger footprint that entails. However, for many mobile applications, the EDBMS component actually suffices. For example, the SymbianOS communications database uses the EDBMS component. In addition to internal system databases, however, the EDBMS component is also available to third-party developers.

RDbNamedDatbase: Using the DBMS Server

To access the database server, use the RDbNamedDatabase class. This is the most common approach, and allows multiple readers/writers to connect to the same database. SymbianOS, a sophisticated operating system, fully supports preemptive multithreading, and it is not uncommon for multiple writers to want to access the same database. RDbStoreDatabase is less commonly used; it bypasses the DBMS server which is slight benefit in terms of not having the additional DBMS server layer. However, the DBMS server layer provides multi-user benefits.

Thus applications using RDbStoreDatabase only allow one writer at a time to have a particular database open. Another benefit of the less-used RDbStoreDatabase is that that class provides for the storing of other data besides tables in the same file as the database tables. Listing One is an example use of RDbNamedDatbase which lists the tables in a database.

// tables.cpp
//
#include "eustd.h"
#include <d32dbms.h>

_LIT(KFile,"c:\\mydatabase.cdb");

// Simple console program to list tables in a database
LOCAL_C void doExampleL()
	{ 
	TInt i; 
    // handle into the DBMS server    
    RDbs myDbs;

    // handle for our database
    RDbNamedDatabase myDatabase;
    
    // we have to connect to the DBMS server first
    User::LeaveIfError( myDbs.Connect());
    
    //handles use the cleanup stack
    CleanupClosePushL(myDbs);
    
    // Open the contacts database using the default format
    User::LeaveIfError( myDatabase.Open(myDbs,KFile,_L("")) );
   
    //handles use the cleanup stack
    CleanupClosePushL(myDatabase);
    
    CDbTableNames* myTableNames;
    TInt numTables = 0;
    
    // retrieve a list of tables in the contacts database
    myTableNames = myDatabase.TableNamesL();
    
    numTables = myTableNames->Count();
    
    for ( i = 0 ; i < numTables; i++)
    {
    console->Printf( (*myTableNames)[i]);
    console->Printf(_L("\n"));
    }
    
    // pause so the console can be seen
    console->Getch();

    // DBMS connection and database handles must be closed    
    CleanupStack::PopAndDestroy(2);

    delete myTableNames;
	}// end doExampleL

Listing One: Tables.cpp.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.