QT建立数据库连接、增删改查示例

下面主要是对mysql数据库的操作,其它的数据库操作其实也类似:

 

1、在.pro文件中加入QT+= sql,如下图:



2、添加SQL相关头文件

#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>

3、连接数据库

    qDebug()<<QSqlDatabase::drivers();    //查询支持的sql对象,下面调用的数据库实例QMYSQL就是从这里的结果确定的

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //数据库对象

    //连接数据库
    db.setHostName("192.168.0.1");            //数据库服务器IP
    db.setPort(3306);                        //端口
    db.setUserName("test");                 //数据库用户名
    db.setPassword("123456");               //数据库密码
    db.setDatabaseName("test");              //使用哪个数据库

    if( !db.open() ){       //数据库打开失败
        QMessageBox::warning(this,"错误",db.lastError().text());
        return;
    }

4、查询数据
我们把查到的数据放到一个tablewidget里,这样看起来直观:

    QStringList headerText;
    headerText<<"权限"<<"姓名"<<"密码";
    ui->tableWidget->setColumnCount(headerText.count());

    for(int i = 0;i<headerText.count();i++)
    {
        ui->tableWidget->setHorizontalHeaderItem(i,new QTableWidgetItem(headerText.at(i)));
    }

    QSqlQuery query;    //查询语句
    query.exec("select * from user;");

    qint32 rowNo = 0;

    while(query.next())
    {
        QTableWidgetItem *item;
        QStandardItem *sItem;

        qDebug()<<query.value(0).toString()<<":"<<query.value(1).toString()<<":"<<query.value(2).toString()<<":"<<query.value(3).toString();
        ui->tableWidget->insertRow(rowNo);

        for(int i=0;i<3;i++)
        {
             item = new  QTableWidgetItem(query.value(i+1).toString(),i);
             ui->tableWidget->setItem(rowNo,i,item);
        }
        rowNo++;
    }

可以看到查询结果:




5、新增数据
调用QSqlQuery  的query方法即可,查询错误可以使用其lastError函数读到命令失败的错误原因

    QSqlQuery query;

    QString sqls = QString("insert into user values(%1,%2,%3,%4);")
            .arg(11).arg(2).arg("'test1'").arg("'test1'");

    qDebug()<<sqls;

    if(query.exec(sqls))
    {
        qDebug()<<"成功";
    }
    else
    {
        qDebug()<<"失败";
        qDebug()<<query.lastError();
    }

6、删除数据

    QSqlQuery query;

    //删除ID=11的用户
    QString sqls = QString("delete from user where id = %1").arg(11);

    qDebug()<<sqls;

    if(query.exec(sqls))
    {
        qDebug()<<"成功";
    }
    else
    {
        qDebug()<<"失败";
        qDebug()<<query.lastError();
    }

7、修改数据

     QString sqls = QString("update user set username = %1 where id = %1;")
             .arg("'user1'").arg(10);

    qDebug()<<sqls;

    if(query.exec(sqls))
    {
        qDebug()<<"成功";
    }
    else
    {
        qDebug()<<"失败";
        qDebug()<<query.lastError();
    }

其它的操作如表操作之类的都是sql的填写拼接的问题,就不多描述了。

8、Qt连接MySQL的时候提示“QSqlDatabase: QMYSQL driver not loaded”,可能是缺少库文件libmysql.dll,可以从msyql的安装目录里找到这个文件并放在QT安装目录的编译器目录下的bin目录下,比如“C:\Qt\Qt5.9.0\5.9\mingw53_32\bin”
如果这样依旧不行,检查安装的mysql的位数是否和QT的一致,如果不一致到这个地址:
https://dev.mysql.com/downloads/connector/c/
下载mysql-connector-c,在其lib目录中找到文件“libmysql.dll”,将这个文件复制到Qt的bin目录下,重启Qt Creator后即可正确运行。
总之,要确保程序运行环境下libmysql.dll这个文件对应的mysql的位数与QT的位数相同。

  • 2
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QT提供了一套完整的数据库操作API,可以方便地进行数据库的增删改查操作。下面是一个简单的示例: 1. 连接数据库 ```cpp QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); // 指定数据库类型 db.setHostName("localhost"); // 指定数据库服务器地址 db.setUserName("root"); // 指定数据库用户名 db.setPassword("123456"); // 指定数据库密码 db.setDatabaseName("testdb"); // 指定数据库名称 if (!db.open()) { // 连接失败 qDebug() << "Failed to connect to database."; return; } ``` 2. 插入数据 ```cpp QSqlQuery query; query.prepare("INSERT INTO person (name, age) VALUES (?, ?)"); query.addBindValue("John"); query.addBindValue(25); if (!query.exec()) { // 插入失败 qDebug() << "Failed to insert data."; return; } ``` 3. 查询数据 ```cpp QSqlQuery query; query.exec("SELECT * FROM person"); while (query.next()) { QString name = query.value(0).toString(); int age = query.value(1).toInt(); qDebug() << name << age; } ``` 4. 更新数据 ```cpp QSqlQuery query; query.prepare("UPDATE person SET age = ? WHERE name = ?"); query.addBindValue(26); query.addBindValue("John"); if (!query.exec()) { // 更新失败 qDebug() << "Failed to update data."; return; } ``` 5. 删除数据 ```cpp QSqlQuery query; query.prepare("DELETE FROM person WHERE name = ?"); query.addBindValue("John"); if (!query.exec()) { // 删除失败 qDebug() << "Failed to delete data."; return; } ``` 需要注意的是,在进行数据库操作之前,需要先在项目文件中添加相应的数据库驱动库文件。例如,如果要连接MySQL数据库,则需要在项目文件中添加以下代码: ```qmake QT += sql QT += mysql ``` 以上是QT对数据库的增删改查操作示例,具体操作还需根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值