一、概述
1、数据库概述
数据库也是应用程序的重要部分,一个完整的应用程序几乎都包含数据库
当前主流的数据库有DB2、MYSQL、OCI、ODBC、SQLITE、TDS、Oracle
Sqlite是一款轻型的数据库,它的设计目标是嵌入式,方便我们使用
2、数据库操作语句
下载安装数据库
tar -xzvf
./configure
make
make install
SELECT * FROM menu WHERE id>20
INSERT INTO menu VALUES(102, HELLO)
DELETE FROM menu WHERE name="wj"
UPDATE menu SET name="weijie"
二、QSql
1、连接数据库
Qt中使用数据库模块,首先要在工程文件.pro中添加;
QT+=sql
使用QSqlDatabase类的addDatabase方法来连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("sqlite3", "wj");
第一个参数是驱动名,也就是我们的数据库类型;第二个参数是连接名
//设置数据库名
db.setDatabaseName("wj78080458");
//设置登录名和密码
db.setUserName("admin");
db.setPassword("123456");
//打开数据库
db.open();
2、操作
在QSql中的QSqlQuery类提供了一个执行sql语句的接口
QSqlQuery query;
query.exec(sql语句);
当执行完exec语句后,就会返回结果。当执行完查询语句时,记录会返回到第一条的前面,使用next函数可以移动记录指针,第一次调用的时候记录会移动到第一条,以后每次调用都会向后移动一步。
query.next();
使用value(int)函数可以取出每个字段的信息,它会返回一个QVariant类型的数据
可以使用isActive函数来检测执行的错误
if(!query.isActive())
qDebug()
3、使用数据库模型
Qt提供了3个访问数据库的模型类
QSqlQueryModel基于任意sql语句的只读模型
QSqlTableModel基于表的读写模型
QSqlRelationalTableModel增加外键支持
QSqlQueryModel model;
model.setQuery("sql语句");
int num = model.record(2).value(No);
int num = model.data(model.index(2,4));
三、实例
connect.h
main.cpp
.lasterror().text();
1、数据库概述
数据库也是应用程序的重要部分,一个完整的应用程序几乎都包含数据库
当前主流的数据库有DB2、MYSQL、OCI、ODBC、SQLITE、TDS、Oracle
Sqlite是一款轻型的数据库,它的设计目标是嵌入式,方便我们使用
2、数据库操作语句
下载安装数据库
tar -xzvf
./configure
make
make install
SELECT * FROM menu WHERE id>20
INSERT INTO menu VALUES(102, HELLO)
DELETE FROM menu WHERE name="wj"
UPDATE menu SET name="weijie"
二、QSql
1、连接数据库
Qt中使用数据库模块,首先要在工程文件.pro中添加;
QT+=sql
使用QSqlDatabase类的addDatabase方法来连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("sqlite3", "wj");
第一个参数是驱动名,也就是我们的数据库类型;第二个参数是连接名
//设置数据库名
db.setDatabaseName("wj78080458");
//设置登录名和密码
db.setUserName("admin");
db.setPassword("123456");
//打开数据库
db.open();
2、操作
在QSql中的QSqlQuery类提供了一个执行sql语句的接口
QSqlQuery query;
query.exec(sql语句);
当执行完exec语句后,就会返回结果。当执行完查询语句时,记录会返回到第一条的前面,使用next函数可以移动记录指针,第一次调用的时候记录会移动到第一条,以后每次调用都会向后移动一步。
query.next();
使用value(int)函数可以取出每个字段的信息,它会返回一个QVariant类型的数据
可以使用isActive函数来检测执行的错误
if(!query.isActive())
qDebug()
Qt提供了3个访问数据库的模型类
QSqlQueryModel基于任意sql语句的只读模型
QSqlTableModel基于表的读写模型
QSqlRelationalTableModel增加外键支持
QSqlQueryModel model;
model.setQuery("sql语句");
int num = model.record(2).value(No);
int num = model.data(model.index(2,4));
三、实例
connect.h
点击(此处)折叠或打开
- #ifndef CONNECTION_H
- #define CONNECTION_H
-
- #include QtSql>
- #include QSqlDatabase>
-
- static bool createConnection()
- {
- QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
- db.setDatabaseName("wj78080458");
- if(!db.open())
- return false;
-
- QSqlQuery query;
- query.exec("create table person(id int primary key, firstname varchar(20), lastname varchar(20))");
- query.exec("insert into person values(101, 'wj', 'weijie')");
- query.exec("insert into person values(102, 'dd', 'dddddd')");
- query.exec("insert into person values(103, 'tl', 'tangliang')");
- return true;
- }
-
- #endif
点击(此处)折叠或打开
- #include QCoreApplication>
- #include QtSql>
-
- int main(int argc, char *argv[])
- {
- QCoreApplication app(argc, argv);
-
- QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","wj");
- db.setDatabaseName("12345678");
- db.setUserName("admin");
- db.setPassword("admin");
- if(!db.open())
- qDebug()"open error";
-
- QSqlQuery query(db);
- query.exec("create table person(id int primary key, name varchar(30), sex varchar(8))");
- query.exec("insert into person values(101, 'weijie', 'man')");
- query.exec("insert into person values(103, 'wj', 'woman')");
-
- query.exec("select * from person");
- query.first();
- qDebug()query.value(0);
- qDebug()query.value(1);
- qDebug()query.value(2);
- query.next();
- qDebug()query.value(0);
- qDebug()query.value(1);
- qDebug()query.value(2);
-
- return 0;
- }