zoukankan      html  css  js  c++  java
  • Qt中操作数据库例子-插入数据

    一般流程:

    • 创建数据库
    • 连接数据库
    • 增删查改
    • 关闭数据库

    环境:win7,vs2013,Qt5.6.0(32 bit),qt add in 1.2.5

    创建控制台工程,记得勾选SQL模块,如果忘记勾选:VS”Qt”菜单-“Qt Project Settings”-“Qt Modules”-勾选SQL。

    连接数据库的函数:

    bool createConnection(QString driver, QString dbName)
    {
        //addDatabase()的第一个参数
        //指定了Qt必须使用哪一个数据库驱动程序来访问这个数据库
        QSqlDatabase db = QSqlDatabase::addDatabase(driver);
    
        //接下来,设置数据库的主机名、数据库名、用户名和密码
        //QSQLITE只需要设置名字就行了
        db.setDatabaseName(dbName);
    
        //打开这个连接,失败将显示出错信息
        if (!db.open())
        {
            //QtSql 模块中的类大多具有lastError()函数,用于检查最新出现的错误
            qDebug() << db.lastError();
            return false;
        }
        return true;
    }

    如果习惯于使用 SQL 语句,我们可以选择QSqlQuery类;

    如果只需要使用高层次的数据库接口(不关心 SQL 语法),我们可以选择QSqlTableModelQSqlRelationalTableModel

    Qt 学习之路 2

    主函数:

    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        //数据库驱动程序名
        QString driver = "QSQLITE";
    
        //数据库名,绝对相对路径都可
        QString dbName = "testli.db";
        //QString dbName = "D:\QT\project\55_DataBase\testli1.db";
    
        //连接数据库,连接失败则返回
        if (!createConnection(driver, dbName))
        {
            return 1;
        }
    
        //创建QSqlTableModel实例
        QSqlTableModel model;
    
        //设置所需要操作的表格
        model.setTable("measureRecords");
    
        //获取系统时间
        QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
    
        //获取一个空的record,但是与数据库表有一样的字段空间?不然插入会失败
        //帮助文档:It returns an empty record, having only the field names.
        QSqlRecord record = model.record();
    
        //设置各字段键值
        record.setValue("measureTime", time);
        record.setValue("measureNumber", 12);
        record.setValue("length", 32);
        record.setValue("width", 32);
        record.setValue("height", 32);
        record.setValue("volume", 45);
        record.setValue("weight", 332);
    
        //插入,-1代表插入到行尾
        model.insertRecord(-1, record);
    
        return a.exec();
    }

    代码在这里

    参考:

    C++ Qt设计模式(豆瓣)第18章为数据库的介绍

    C++GUI Qt4编程(豆瓣)第13章为数据库的介绍

    Qt 学习之路 2

  • 相关阅读:
    如何用grunt压缩文件
    nodejs 下载,安装,测试(windows环境下)
    INNODB和MYISAM
    HashMap和HashTable
    平衡二叉树(AVL)
    二叉排序树删除
    二叉排序树的创建和遍历
    二叉排序树基础
    赫夫曼树
    堆排序
  • 原文地址:https://www.cnblogs.com/shanchuan/p/8150293.html
Copyright © 2011-2022 走看看