本文整理自网络,侵删。
在上一篇博文中详细介绍了SqlTableModle组件是如何使用的,本篇博文将介绍SqlRelationalTable
关联表组件,该组件其实是SqlTableModle
组件的扩展类,SqlRelationalTable
组件可以关联某个主表中的外键,例如将主表中的某个字段与附加表中的特定字段相关联起来,QSqlRelation(关联表名,关联ID,名称)
就是用来实现多表之间快速关联的。
首先我们创建两张表,一张Student
表存储学生名字以及学生课程号,另一张Departments
存储每个编号所对应的系所名称,运行代码完成创建。
void MainWindow::InitSQL() { QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("./lyshark.db"); if (!db.open()) return; // 执行SQL创建表 db.exec("DROP TABLE Student"); db.exec("CREATE TABLE Student (" "id INTEGER PRIMARY KEY AUTOINCREMENT, " "name VARCHAR(40) NOT NULL, " "departID INTEGER NOT NULL)" ); // 逐条插入数据 db.exec("INSERT INTO Student(name,departID) VALUES('zhangsan',10)"); db.exec("INSERT INTO Student(name,departID) VALUES('lisi',20)"); db.exec("INSERT INTO Student(name,departID) VALUES('wangwu',30)"); db.exec("INSERT INTO Student(name,departID) VALUES('wangmazi',40)"); db.exec("DROP TABLE Departments"); db.exec("CREATE TABLE Departments(" "departID INTEGER NOT NULL," "department VARCHAR(40) NOT NULL)" ); db.exec("INSERT INTO Departments(departID,department) VALUES (10,'数学学院')"); db.exec("INSERT INTO Departments(departID,department) VALUES (20,'物理学院')"); db.exec("INSERT INTO Departments(departID,department) VALUES (30,'计算机学院')"); db.commit(); db.close(); }
初始化后将得到两张数据表,这两张表通过departID
相关联,如下:
相关阅读 >>
ios app中数据管理框架core data的基本数据操作教程
python web框架之django框架model基础详解
android studio连接Sqlite数据库的登录注册实现
python实现将Sqlite中的数据直接输出为cvs的方法示例
更多相关阅读请进入《Sqlite》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。