QT中使用Sqlite
首先要在.pro
中引用sql
,引用方法:
-
新添加语句
QT += sql
-
在原来的基础上追加
QT += core gui sql
然后再widget.h
中添加对sql头文件的引用:
#include <QSqlDatabase> //创建数据库头文件
#include <QSqlQuery> //操作执行SQL语句
#include <QString> //字符串操作
举例
- 定义一个QSqlDatabase对象,并添加数据库:
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QSQLITE");
QSqlDatabase支持的数据库如下:
|
|
QDB2 |
BM DB2 |
QIBASE |
Borland InterBase Driver |
QMYSQL |
MySQL Driver |
QOCI |
Oracle Call Interface Driver |
QODBC |
ODBC Driver (includes Microsoft SQL Server) |
QPSQL |
PostgreSQL Driver |
QSQLITE |
SQLite version 3 or above |
QSQLITE2 |
SQLite version 2 |
QTDS |
Sybase Adaptive Server |
-
创建数据库,设置数据库名
db.setDatabaseName("test.db");
-
连接数据库
QString s = db.connectionName();
-
打开数据库
db.open();
此步操作后会在编译的目录下生成一个test.db
文件。
-
创建sql对象,通过exec()
来执行sql语句.
QSqlQuery sql; //在数据库链接之后
sql.exec();
也可以在前面定义QSqlQuery的指针数据,在数据库链接之后实例化
QSqlQuery *psql;
psql = new QSqlQuery();
psql->exec();
本例中使用后一种方法。
-
创建table
psql->exec("create table user(name,age)");
-
插入数据
psql->exec("insert into user(name,age) values('zhangsan',23)");
运行结果如下图:
注意:
QT操作sqlite,如果数据库或者表已经存在,则不会再次创建,而是以已打开的形式追加操作。
如上程序再次执行一遍,结果如下:
使用命令查看方式如下:
完整代码:
#include <QWidget>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QString>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
QSqlDatabase db;
QSqlQuery *psql;
};
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("test.db"); //创建数据库,设置数据库名
QString s = db.connectionName();
db.open();
psql = new QSqlQuery();
psql->exec("create table user(name,age)");
psql->exec("insert into user(name,age) values('zhangsan',23)");
}
Widget::~Widget()
{
delete ui;
delete psql;
}