以SQLITE为例,对数据库进行简单操作
数据库的基本操作不外乎以下几类:
- 建立数据库
- 数据库打开关闭
- 表格的添加删除
- 数据的增删改查
以下是一个Qt例子,其中主要涉及的类:QSqlDatabase,QSqlQuery,前者对数据库进行设置,后者执行sql语句
工程文件(*.pro)
QT += core sql
CONFIG += c++11 console
CONFIG -= app_bundle
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp
cpp文件
#include <QCoreApplication>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("demoSqlite.db");
if(!db.open())
{
qDebug()<<db.lastError();
return 0;
}
QSqlQuery query;
QStringList tables = db.tables();
if(!tables.contains("users"))
{
if(!query.exec("CREATE TABLE users(id integer primary key, name varchar, age integer);"))
{
qDebug()<<"create users error";
qDebug()<<query.lastError();
db.close();
return 0;
}
}
if(!query.exec("insert into users values(1, 'name1', 21), (2, 'name2', 23);"))
{
qDebug()<<"insert data into users error";
qDebug()<<query.lastError();
}
if(!query.exec("select * from users;"))
{
qDebug()<<"query from users error";
qDebug()<<query.lastError();
}
for(; query.next();)
{
qDebug()<<query.value("id").toInt();
qDebug()<<query.value("name").toString();
qDebug()<<query.value("age").toUInt();
}
db.close();
return a.exec();
}
运行结果
表格数据