Creating a database table in Qt
hamishwillee
(Talk | contribs) m (Text replace - "<code cpp>" to "<code cpp-qt>") |
|||
| (19 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
| − | {{ | + | {{ArticleMetaData <!-- v1.2 --> |
| − | | | + | |sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) --> |
| − | | | + | |installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> |
| − | |devices=Nokia 5800 | + | |devices= Nokia 5800 XpressMusic, Nokia N900 |
| − | | | + | |sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> |
| − | | | + | |platform= Qt |
| − | | | + | |devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) --> |
| − | |keywords=QSqlDatabase, QSQlite, QSqlError, QSqlQuery | + | |dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 --> |
| + | |signing= <!-- Empty or one of Self-Signed, DevCert, Manufacturer --> | ||
| + | |capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. --> | ||
| + | |keywords= QSqlDatabase, QSQlite, QSqlError, QSqlQuery | ||
| + | |language= <!-- Language category code for non-English topics - e.g. Lang-Chinese --> | ||
| + | |translated-by= <!-- [[User:XXXX]] --> | ||
| + | |translated-from-title= <!-- Title only --> | ||
| + | |translated-from-id= <!-- Id of translated revision --> | ||
| + | |review-by= <!-- After re-review: [[User:username]] --> | ||
| + | |review-timestamp= <!-- After re-review: YYYYMMDD --> | ||
| + | |update-by= <!-- After significant update: [[User:username]]--> | ||
| + | |update-timestamp= <!-- After significant update: YYYYMMDD --> | ||
| + | |creationdate= 20090909 | ||
| + | |author= [[User:Tepaa]] | ||
| + | <!-- The following are not in current metadata --> | ||
| + | |subcategory= Database | ||
| + | |id= CS001505 | ||
}} | }} | ||
==Overview== | ==Overview== | ||
| − | This example shows you how to create 'person' table | + | This example shows you how to create a 'person' table in an SQLite database in Qt. |
| − | + | The table 'person' has the following columns: | |
| − | * id (integer primary key), this is autoincrement field 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 38: | ||
==Preconditions== | ==Preconditions== | ||
| − | * Qt is installed on your platform | + | * Qt is installed on your platform. |
| + | ** S60: | ||
| + | *** Download Qt release from here: [http://developer.qt.nokia.com/wiki/Support_for_Symbian Qt pre-release] | ||
| + | *** Install Qt: [[How to Install Qt]] | ||
| + | *** Check this link for installation guide: [http://developer.qt.nokia.com/wiki/Support_for_Symbiandoc/install-s60.html How to install the package] | ||
| + | *** Qt Tower release has SQLite support. The required libraries are built into the Qt release. | ||
| + | ** Maemo: | ||
| + | *** More information about Qt on Maemo can be found here: [http://qt4.garage.maemo.org/ Qt4 Maemo port] | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | Maemo SQLite development | + | For Maemo SQLite development, the following packages must be installed: |
* libqt4-sql | * libqt4-sql | ||
| − | * libqt4-sql- | + | * libqt4-sql-sqlite |
* libsqlite3-0 | * libsqlite3-0 | ||
* libsqlite3-dev | * libsqlite3-dev | ||
| Line 43: | Line 57: | ||
==Header== | ==Header== | ||
| − | <code cpp> | + | <code cpp-qt> |
#include <QObject> | #include <QObject> | ||
#include <QSqlDatabase> | #include <QSqlDatabase> | ||
| Line 67: | Line 81: | ||
==Source== | ==Source== | ||
| − | Create | + | Create the 'person' table. |
| − | <code cpp> | + | <code cpp-qt> |
bool DatabaseManager::createPersonTable() | bool DatabaseManager::createPersonTable() | ||
{ | { | ||
| Line 87: | Line 101: | ||
</code> | </code> | ||
| − | + | The rest of the code: | |
| − | <code cpp> | + | <code cpp-qt> |
bool DatabaseManager::openDB() | bool DatabaseManager::openDB() | ||
{ | { | ||
| Line 95: | Line 109: | ||
#ifdef Q_OS_LINUX | #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 | #else | ||
| − | // | + | // NOTE: File exists in the application private folder, in Symbian Qt implementation |
| − | + | ||
db.setDatabaseName("my.db.sqlite"); | db.setDatabaseName("my.db.sqlite"); | ||
#endif | #endif | ||
| Line 112: | Line 127: | ||
===Postconditions=== | ===Postconditions=== | ||
| − | + | The database table 'person' is created. | |
==See also== | ==See also== | ||
| − | * [[ | + | * [[Creating an SQLite database in Qt]] |
| − | * [[ | + | * [[Inserting a row into a database in Qt]] |
| − | * [[ | + | * [[Searching for data in a database in Qt]] |
| + | * [[Deleting data from a database in Qt]] | ||
| + | * [[Selecting data from a database without using SQL statements in Qt]] | ||
| + | * [[Using QDataWidgetMapper to show data from a database in Qt]] | ||
* [http://www.w3schools.com/Sql/default.asp w3schools.com/Sql] | * [http://www.w3schools.com/Sql/default.asp w3schools.com/Sql] | ||
* [http://doc.trolltech.com/4.5/qtsql.html QtSql module] | * [http://doc.trolltech.com/4.5/qtsql.html QtSql module] | ||
| − | [[Category:Qt]][[Category:Code | + | [[Category:Qt]][[Category:Code Snippet]][[Category: UI]][[Category:Code Snippet]][[Category:MeeGo Harmattan]] [[Category:Symbian]] |
Latest revision as of 04:16, 11 October 2012
Article Metadata
Tested with
Devices(s): Nokia 5800 XpressMusic, Nokia N900
Compatibility
Platform(s): Qt
Article
Keywords: QSqlDatabase, QSQlite, QSqlError, QSqlQuery
Created: tepaa
(09 Sep 2009)
Last edited: hamishwillee
(11 Oct 2012)
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:
- id (integer primary key), this is an autoincrement field http://www.sqlite.org/autoinc.html
- firstname (varchar(20))
- lastname (varchar(30))
- age (integer)
Preconditions
- Qt is installed on your platform.
- S60:
- Download Qt release from here: Qt pre-release
- Install Qt: How to Install Qt
- Check this link for installation guide: How to install the package
- Qt Tower release has SQLite support. The required libraries are built into the Qt release.
- Maemo:
- More information about Qt on Maemo can be found here: Qt4 Maemo port
- S60:
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.

