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

posted @ 2017-03-07 20:57  ssh_alitheia  阅读(1706)  评论(0编辑  收藏  举报