C++ Qt Programming - 51 - 57 - 数据库编程

1 这里用的ODBC,数据库连接参考上一课,但上一课没有db.close()?

 

2 how to make a query?

    QSqlQuery qry;                                  // query: 查询
    if (qry.exec("select * from table")) {
        while (qry.next()) {                        // 遍历每一行
            qDebug() << qry.value(1).toString();    // 第一列的值
        }
    } else {
        qDebug() << "error = " << db.lastError().text();
    }

3 prepare and bindValue 插入数据:

    // 注意冒号, 为什么不直接写,而用prepare和bindValue
    QString  sQuery = "INSERT INTO [test].[dbo].[people] ([FirstName], LastName]) VALUES(:first, :last)";
    QSqlQuery qry;

    qry.prepare(sQuery);
    qry.bindValue(":first", "san");
    qry.bindValue(":first", "zhang");

    if (qry.exec()) {
        qDebug() << "Record Inserted";
    }
    qDebug() << "Closing...";
    db.close();

4 QSqlDatabase with DSN - 54课:

关系windows系统odbc的设置

 

5 QSqlQueryModel 显示表格

和之前课程的model/view课程差不多,先调用model的set数据的函数,在调用view的setmodel函数

    model = new QSqlQueryModel(this);
    model->setQuery("SELECT.....");
    ui->tableView->setModel(model);

问题:不能编辑

 

6 QSqlTableModel(黑马用的这个)

    // 表格内容可编辑
    model = new QSqlTableModel(this);
    model->setTable("People");
    model->select();

    qDebug() << model->lastError().text(); // 如果表格内容不显示,这里会打印
    ui->tableView->setModel(model);

7 著名的QSqlRelationalTableModel

QSqlRelationalTableModel可以用来设置不同表格之间的relation

         

 people表的ID = wages表的person,如下是代码的显示内容,主要是setRelation接口

  

    model = new QSqlRelationalTableModel(this);
    model->setTable("People");
    model->setRelation(0, QSqlRelation("wages", "id", "salary")); //id column in people and the salary 应该连在一起

    model->select();
    ui->tableView->setModel(model);

model的数据是people,把它和wages表关联起来,输出关联之后的表

sql server中还有更简单的方式:在sql server的views中进行操作

 

posted @   妖山鬼店  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示