开发者社区> 一生有你llx> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

lesson14-数据库结构设计

简介: 一、概述 1、数据库概述 数据库也是应用程序的重要部分,一个完整的应用程序几乎都包含数据库 当前主流的数据库有DB2、MYSQL、OCI、ODBC、SQLITE、TDS、Oracle Sqlite是一款轻型的数据库,它的设计目标是嵌入式,方便我们使用   2、数据库操作语句 下载安装数据库 tar -xzvf .
+关注继续查看
一、概述
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

点击(此处)折叠或打开

  1. #ifndef CONNECTION_H
  2. #define CONNECTION_H

  3. #include QtSql>
  4. #include QSqlDatabase>

  5. static bool createConnection()
  6. {
  7.     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  8.     db.setDatabaseName("wj78080458");
  9.     if(!db.open())
  10.         return false;

  11.     QSqlQuery query;
  12.     query.exec("create table person(id int primary key, firstname varchar(20), lastname varchar(20))");
  13.     query.exec("insert into person values(101, 'wj', 'weijie')");
  14.     query.exec("insert into person values(102, 'dd', 'dddddd')");
  15.     query.exec("insert into person values(103, 'tl', 'tangliang')");
  16.     return true;
  17. }

  18. #endif
main.cpp

点击(此处)折叠或打开

  1. #include QCoreApplication>
  2. #include QtSql>

  3. int main(int argc, char *argv[])
  4. {
  5.     QCoreApplication app(argc, argv);

  6.     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","wj");
  7.     db.setDatabaseName("12345678");
  8.     db.setUserName("admin");
  9.     db.setPassword("admin");
  10.     if(!db.open())
  11.         qDebug()"open error";

  12.     QSqlQuery query(db);
  13.     query.exec("create table person(id int primary key, name varchar(30), sex varchar(8))");
  14.     query.exec("insert into person values(101, 'weijie', 'man')");
  15.     query.exec("insert into person values(103, 'wj', 'woman')");

  16.     query.exec("select * from person");
  17.     query.first();
  18.     qDebug()query.value(0);
  19.     qDebug()query.value(1);
  20.     qDebug()query.value(2);
  21.     query.next();
  22.     qDebug()query.value(0);
  23.     qDebug()query.value(1);
  24.     qDebug()query.value(2);

  25.     return 0;
  26. }



.lasterror().text();

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据结构与算法设计基础
数据结构与算法设计基础
51 0
超硬核讲解数据结构与算法之线性表(三)
超硬核讲解数据结构与算法之线性表
31 0
数据结构与算法题目集(中文) - 7-50 畅通工程之局部最小花费问题(35 分)
数据结构与算法题目集(中文) - 7-50 畅通工程之局部最小花费问题(35 分)
33 0
二叉树的应用(范文)数据结构
目录 1.编写算法实现二叉树T的按层遍历。(二叉树采用二叉链表存储) 2.编写算法实现对二叉树T交换左右子树的操作。(二叉树采用二叉链表存储) 参考算法: 符号常量和类型的定义及二叉链表的存储表示如 1题。 3.编写算法实现统计并返回二叉树T的叶子结点的数目的操作。(二叉树采用二叉链表存储) 参考算法: 符号常量和类型的定义及二叉链表的存储表示如第1题。 4.编写算法实现计算并返回二叉树T的深度。(二叉树采用二叉链表存储) 参考算法: 符号常量和类型的定义及二叉链表的存储表示如第1题
20 0
数据结构之设计
数据结构之设计
26 0
数据结构-线性表
数据结构-线性表
30 0
数据结构——线性表
1 线性表的特性是数据元素之间在逻辑结构上存在着线性关系,在计算机中表示这种关系的两类不同的存储结构是顺序存储结构和链式存储结构。用前者表示的线性表简称为顺序表,用后者表示的线性表简称为链表。 2 当线性表的长度n=0时,为一个空表。当n>0时,序列中必存在唯一的一个“第一个元素”,也必存在唯一的一个“最后一个元素”。除第一个元素外,每一个元素均有唯一的前驱;除最后一个元素外,
807 0
+关注
一生有你llx
专注物联网
406
文章
132
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载