Qt数据库的基本使用

    xiaoxiao2021-03-25  80

      最近在工作上开始尝试使用Qt来写一些小程序,因为Qt是刚学习的,很多功能都是第一次使用,所以特意整理了一下。

      这里总结了数据库在Qt开发中的基本使用,包括数据库创建,连接,增,删,查,改,满足了数据库的基本使用。

    头文件包含

    #include <QtSql/QSqlDatabase> #include <QtSql/QSqlQuery>

    1.创建数据库

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "mysql");//创建数据库,参数二用于在使用中连接数据库; db.setDatabaseName("UserInfo.db");//设定数据的保存路径; if(!db.open()) { //能打开就证明数据库成功创建; qDebug()<< "数据库创建失败!"; }    连接数据库 QSqlDatabase db = QSqlDatabase::database("mysql");//连接数据库,参数为创建时设定的连接名称; 2.创建表格 QSqlQuery query(db);//新建数据库操作索引; bool Rsl = query.exec("create table user(id int primary key, name nvarchar(10), gender nvarchar(2)," "age int, height int)");//新建数据表 if(Rsl) { qDebug()<< "创建数据表成功!"; } else { qDebug()<< "创建数据表失败!"; } 3.增 QSqlQuery query(db);//创建数据库操作索引; //方法一; query.prepare("insert into user values(?, ?, ?, ?, ?)");//数据库前置指令,与后面的指令配合使用; query.bindValue(0, 1); query.bindValue(1, "李四"); query.bindValue(2, "男"); query.bindValue(3, 25); query.bindValue(4, 175); bool Rsl = query.exec();//执行上面的操作; //方法二 Rsl = query.exec(QString("insert into user values(%1, %2, '男', 20, 170)").arg(4).arg("'陈五'")); if(Rsl) { qDebug()<< "插入数据成功!"; } else { qDebug()<< "插入数据失败!"; } 4.删 QSqlQuery query(db); bool Rsl = query.exec(QString("delete from user where id = %1").arg(1)); if(Rsl) { qDebug()<< "删除数据成功!"; } else { qDebug()<< "删除数据失败!"; } 5.查 QSqlQuery query(db); //该指令返回的结果仅表示该数据库语句执行结果,并不代表查询结果; bool Rsl = query.exec(QString("select * from user")); if(Rsl) { qDebug()<< "查询成功!"; QString qstr; while(query.next())//指向查询结果的列表,重复执行相当于指针递增;遍历所有查询结果; { qstr += query.value(0).toString() + "\t";//对应数据表中关键字1; qstr += query.value(1).toString() + "\t";//对应数据表中关键字2; qstr += query.value(2).toString() + "\t";//对应数据表中关键字3; qstr += query.value(3).toString() + "\t";//对应数据表中关键字4; qstr += query.value(4).toString() + "\t";//对应数据表中关键字5; qDebug()<< qstr; } } else { qDebug()<< "查询失败!"; } 6.改 QSqlQuery query(db); //方法一 query.prepare(QString("update user set age = ?, height = ? where id = %1").arg(2)); query.bindValue(0, 27); query.bindValue(1, 180); bool Rsl = query.exec(); //方法二 Rsl = query.exec(QString("update user set age = %1, height = %2 where id = %3").arg(29).arg(190).arg(3)); if(Rsl) { qDebug()<< "更新数据成功!"; } else { qDebug()<< "更新数据失败!"; }

       问题总结:

        1)使用中最常见的问题是sql语句错误,这些错误编译器是检查不出来的,因为它们在这里都是字符串,只有在运行时验证这些语句是否执行成功。因此判断执行结果很有必要,当出现执行失败时不妨检查sql语句是否存在错误,包括书写语法及书写错误。

        2)当数据库已存在某条记录时,再去插入同关键字记录也会操作失败,所以插入前需先检查一下是否存在该记录,存在则选择更新,不存在则插入。

        3)需要在pro文件里加上

              QT+=sql

              因为 数据库是Qt的一个模块;

    本文对应【Demo

    转载请注明原文地址: https://ju.6miu.com/read-16427.html

    最新回复(0)