本篇内容介绍了”C/c++, Qt数据库SqlRelationalTable关联表怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
首先我们创建两张表,一张<代码> 代码>学生表存储学生名字以及学生课程号,另一张<代码> 代码>部门存储每个编号所对应的系所名称,运行代码完成创建。
void 主窗口:InitSQL () { ,,,QSqlDatabase db =, QSqlDatabase: addDatabase (“QSQLITE"); ,,,db.setDatabaseName (“。/lyshark.db"); ,,,if (! db.open ()) ,,,,,,,,,,返回; ,,,//,执行SQL创建表 ,,,db.exec (“DROP TABLE Student"); ,,,db.exec (“CREATE TABLE Student “ ,,,,,,,,,,,,,,,,,,“id INTEGER PRIMARY KEY 自动增量,,, ,,,,,,,,,,,,,,,,,,“name VARCHAR (40), NOT 空,,, ,,,,,,,,,,,,,,,,,,“departID INTEGER NOT 零)“; ,,,,,,,,,,,); ,,,//,逐条插入数据 ,,,db.exec (“INSERT  INTO 学生(姓名、departID),值(& # 39;zhangsan& # 39; 10)“); ,,,db.exec (“INSERT  INTO 学生(姓名、departID),值(& # 39;lisi # 39;, 20)“); ,,,db.exec (“INSERT  INTO 学生(姓名、departID),值(& # 39;wangwu& # 39;, 30)“); ,,,db.exec (“INSERT  INTO 学生(姓名、departID),值(& # 39;wangmazi& # 39;, 40)“); ,,,db.exec (“DROP TABLE Departments"); ,,,db.exec (“CREATE  TABLE 部门(“ ,,,,,,,,,,,“departID INTEGER NOT 空,“ ,,,,,,,,,,,“department VARCHAR (40), NOT 零)“; ,,,,,,,,,,,); ,,,db.exec (“INSERT  INTO 部门(departID、部门),VALUES (10日& # 39;数学学院& # 39;)“); ,,,db.exec (“INSERT  INTO 部门(departID、部门),VALUES (20日& # 39;物理学院& # 39;)“); ,,,db.exec (“INSERT  INTO 部门(departID、部门),VALUES (30日& # 39;计算机学院& # 39;)“); ,,,, ,,,db.commit (); ,,,db.close (); }
初始化后将得到两张数据表,这两张表通过<代码> departID> 代码相关联,如下:
//, https://www.cnblogs.com/lyshark 主窗口:主窗口(QWidget *父母):,QMainWindow(父),ui (new ui::主窗口) { ,,,ui→setupUi(这个); ,,,InitSQL (); ,,,//,打开数据库 ,,,QSqlDatabase db =, QSqlDatabase: addDatabase (“QSQLITE"); ,,,db.setDatabaseName (“。/lyshark.db"); ,,,if (! db.open ()) ,,,,,,,返回; ,,,这个→setCentralWidget (ui→tableView); ,,,ui→tableView→setSelectionBehavior (QAbstractItemView:: SelectItems); ,,,ui→tableView→setSelectionMode (QAbstractItemView:: SingleSelection); ,,,ui→tableView→setAlternatingRowColors(真正的); ,,,//,打开数据表 ,,,tabModel=new QSqlRelationalTableModel(这个,DB); ,,,tabModel→可变的(“Student");,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,//,设置数据表 ,,,tabModel→setEditStrategy (QSqlTableModel:: OnManualSubmit);,,//OnManualSubmit ,,,tabModel→setSort (0, Qt:: AscendingOrder); ,,,tabModel→setHeaderData (0, Qt::水平,“学号“); ,,,tabModel→setHeaderData (1, Qt::水平,“姓名“); ,,,tabModel→setHeaderData (2, Qt::水平,“学院“); ,,,//,设置代码字段的查询关系数据表 ,,,//,打开部门表、关联ID和部门 null null null null null null null null null null null null null null