×
Namespaces

Variants
Actions
(Difference between revisions)

Creating a database table in Qt

From Nokia Developer Wiki
Jump to: navigation, search
tepaa (Talk | contribs)
copyeditor (Talk | contribs)
m
Line 1: Line 1:
 +
{{KBCS}}
 
{{CodeSnippet
 
{{CodeSnippet
|id=
+
|id=CS001505
 
|platform=Qt
 
|platform=Qt
|devices=Nokia 5800 eXpressMusic, Nokia N900
+
|devices=Nokia 5800 XpressMusic, Nokia N900
 
|category=Qt
 
|category=Qt
 
|subcategory=Database
 
|subcategory=Database
|creationdate=September 9, 2009
+
|creationdate=November 24, 2009
 
|keywords=QSqlDatabase, QSQlite, QSqlError, QSqlQuery  
 
|keywords=QSqlDatabase, QSQlite, QSqlError, QSqlQuery  
 
}}
 
}}
Line 11: Line 12:
 
==Overview==
 
==Overview==
  
This example shows you how to create 'person' table into (SQLite) database in Qt.
+
This example shows you how to create a 'person' table in an SQLite database in Qt.
  
Table person has following columns
+
The table 'person' has the following columns:
* id (integer primary key), <b>this is autoincrement field</b> http://www.sqlite.org/autoinc.html
+
* id (integer primary key), <b>this is an autoincrement field</b> http://www.sqlite.org/autoinc.html
 
* firstname (varchar(20))
 
* firstname (varchar(20))
 
* lastname (varchar(30))
 
* lastname (varchar(30))
Line 22: Line 23:
 
==Preconditions==
 
==Preconditions==
  
* Qt is installed on your platform
+
* Qt is installed on your platform.
 
+
** S60:
** S60
+
 
*** Download Qt for S60 release from here: [http://pepper.troll.no/s60prereleases/ Qt for S60 pre-release]
 
*** Download Qt for S60 release from here: [http://pepper.troll.no/s60prereleases/ Qt for S60 pre-release]
 
*** Install Qt for S60: [[Installing Qt on S60]]
 
*** Install Qt for S60: [[Installing Qt on S60]]
*** Check this link for installation guide: [http://pepper.troll.no/s60prereleases/doc/install-s60.html How to install the package].
+
*** Check this link for installation guide: [http://pepper.troll.no/s60prereleases/doc/install-s60.html How to install the package]
*** Qt for S60 Tower release has SQLite support. Needed libraries are bilt in the Qt release.
+
*** Qt for S60 Tower release has SQLite support. The required libraries are built into the Qt release.
 
+
** Maemo:
 
+
** Maemo  
+
 
*** More information about Qt on Maemo can be found here: [http://qt4.garage.maemo.org/ Qt4 Maemo port]
 
*** More information about Qt on Maemo can be found here: [http://qt4.garage.maemo.org/ Qt4 Maemo port]
  
  
Maemo SQLite development needs following packages to be installed:
+
For Maemo SQLite development, the following packages must be installed:
 
* libqt4-sql
 
* libqt4-sql
 
* libqt4-sql-sqlite
 
* libqt4-sql-sqlite
Line 68: Line 66:
 
==Source==
 
==Source==
  
Create "person" table.
+
Create the 'person' table.
 
<code cpp>
 
<code cpp>
 
bool DatabaseManager::createPersonTable()
 
bool DatabaseManager::createPersonTable()
Line 88: Line 86:
 
</code>
 
</code>
  
Rest of the code...
+
The rest of the code:
 
<code cpp>
 
<code cpp>
 
bool DatabaseManager::openDB()
 
bool DatabaseManager::openDB()
Line 114: Line 112:
 
===Postconditions===
 
===Postconditions===
  
Database table "person" created.
+
The database table 'person' is created.
  
  
 
==See also==
 
==See also==
  
* [[Tools:Creating SQLite database in Qt]]
+
* [[CS001504 - Creating an SQLite database in Qt]]
* [[Tools:Creating database table in Qt]]
+
* [[CS001506 - Inserting a row into a database in Qt]]
* [[Tools:Insert row into database in Qt]]
+
* [[CS001507 - Searching for data in a database in Qt]]
* [[Tools:Search data from the database in Qt]]
+
* [[CS001508 - Deleting data from a database in Qt]]
* [[Tools:Delete data from database in Qt]]
+
* [[CS001509 - Selecting data from a database without using SQL statements in Qt]]
* [[Select data from database without using SQL statements in Qt]]
+
* [[CS001510 - Using QDataWidgetMapper to show data from a database in Qt]]
* [[Tools:Using QDataWidgetMapper for showing data from database in Qt]]
+
  
 
* [http://www.w3schools.com/Sql/default.asp w3schools.com/Sql]
 
* [http://www.w3schools.com/Sql/default.asp w3schools.com/Sql]

Revision as of 16:58, 24 November 2009

Template:KBCS

Article Metadata
Tested with
Devices(s): Nokia 5800 XpressMusic, Nokia N900
Compatibility
Platform(s): Qt
Symbian
Article
Keywords: QSqlDatabase, QSQlite, QSqlError, QSqlQuery
Created: (24 Nov 2009)
Last edited: copyeditor (24 Nov 2009)

Contents

Overview

This example shows you how to create a 'person' table in an SQLite database in Qt.

The table 'person' has the following columns:


Preconditions


For Maemo SQLite development, the following packages must be installed:

  • libqt4-sql
  • libqt4-sql-sqlite
  • libsqlite3-0
  • libsqlite3-dev


Header

#include <QObject>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
 
class DatabaseManager : public QObject
{
public:
DatabaseManager(QObject *parent = 0);
~DatabaseManager();
 
public:
bool openDB();
bool createPersonTable();
 
private:
QSqlDatabase db;
};


Source

Create the 'person' table.

bool DatabaseManager::createPersonTable()
{
// Create table "person"
bool ret = false;
if (db.isOpen())
{
QSqlQuery query;
ret = query.exec("create table person "
"(id integer primary key, "
"firstname varchar(20), "
"lastname varchar(30), "
"age integer)");
 
}
return ret;
}

The rest of the code:

bool DatabaseManager::openDB()
{
// Find QSLite driver
db = QSqlDatabase::addDatabase("QSQLITE");
 
#ifdef Q_OS_LINUX
// NOTE: We have to store database file into user home folder in Linux
QString path(QDir::home().path());
path.append(QDir::separator()).append("my.db.sqlite");
path = QDir::toNativeSeparators(path);
db.setDatabaseName(path);
#else
// NOTE: File exists in the application private folder, in Symbian Qt implementation
db.setDatabaseName("my.db.sqlite");
#endif
 
// Open databasee
return db.open();
}


Postconditions

The database table 'person' is created.


See also

762 page views in the last 30 days.
×