您当前的位置: 首页 >  sql

txwtech

暂无认证

  • 2浏览

    0关注

    813博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

QT使用SQL模型类_关系表格模型-操作数据库以及委托类的使用

txwtech 发布时间:2022-08-07 22:53:54 ,浏览量:2

QT使用SQL模型类_关系表格模型-操作数据库以及委托类的使用

作用:一个数据库中创建两个表

rela_model->setRelation(2,QSqlRelation("course","id","name"));//student表的course字段去关联course表的id字段,对应显示name的值

 
QSqlRelationalTableModel *rela_model = new QSqlRelationalTableModel(this);

 

执行程序后:

student表的课程代码22,对应course表id 22,对应显示具体的课程名字 

 

#ifndef SQL_CON1_H
#define SQL_CON1_H
#include 
#include 
#include 
static bool createConn()
{
    QSqlDatabase db2=QSqlDatabase::addDatabase("QSQLITE");
    db2.setDatabaseName("db17_6.db");
    if(!db2.open())
    {
        QMessageBox::critical(0,"create failed","不能创建数据库连接",QMessageBox::Cancel);
        return false;
    }
    QSqlQuery sql_query;
    //创建表
    sql_query.exec("create table student (id int primary key, name vchar,course int)");
    sql_query.exec("insert into student values(1,'长三',22)");
    sql_query.exec("insert into student values(2,'长五',25)");
    sql_query.exec("insert into student values(3,'长六',26)");

    //创建表 course
    sql_query.exec("create table course (id int primary key, name vchar, teacher varchar)");
    sql_query.exec("insert into course values(22,'语文','李老师')");
    sql_query.exec("insert into course values(25,'数学','王')");
    sql_query.exec("insert into course values(26,'外语','张')");

    return true;
}

#endif // SQL_CON1_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include 
#include 
#include  //委托一个外键提供一个QComboBox部件来显示所有可选的数据

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QSqlRelationalTableModel *rela_model = new QSqlRelationalTableModel(this);
    rela_model->setTable("student");
    rela_model->setRelation(2,QSqlRelation("course","id","name"));//student表的course字段去关联course表的id字段,对应显示name的值
    rela_model->select();
    QTableView *tab_view=new QTableView(this);

    tab_view->setModel(rela_model);

    setCentralWidget(tab_view);//显示控件信息到主窗口
     tab_view->setItemDelegate(new QSqlRelationalDelegate(tab_view));


}

MainWindow::~MainWindow()
{
    delete ui;
}

另外: 

#include //委托一个外键提供一个QComboBox部件来显示所有可选的数据

 tab_view->setItemDelegate(new QSqlRelationalDelegate(tab_view));

 

 

关注
打赏
1665060526
查看更多评论
立即登录/注册

微信扫码登录

0.0388s