qt连接MySQL的提示


#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    db=QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName(" mydatabase");
    db.setHostName("localhost");
    db.setUserName("root");
    db.setPassword("123456");
    db.setPort(3306);
    if(db.open()){
       QMessageBox::information(this,"连接提示","连接成功");
    }
    else{
         QMessageBox::warning(this,"连接提示","连接失败");
    }
}

Widget::~Widget()
{
    delete ui;
}


为什么qt运行后既没有连接成功也没有连接失败

运行的还是原来的文件

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/386754
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Qt连接mySQL之学生数据成绩查询系统(添加、删除、修改数据)
  • 除此之外, 这篇博客: QT连接MySql数据库失败,编译驱动问题,最详细解决办法中的 1.错误提示: 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析: 根据代码中的逻辑,当数据库连接成功时,会显示一个"连接成功"的提示框,当连接失败时,会显示一个"连接失败"的提示框。但是,即使当连接成功时,也没有显示"连接成功"的提示框。所以,可以有以下的可能原因导致问题: 1. 界面没有显示出来: 可能是因为没有正确设置父级窗口,导致界面没有显示出来,所以也没有看到提示框。 2. 代码逻辑有错误: 可能是因为代码逻辑有错误,导致没有执行到显示提示框的代码。 3. 其他原因: 可能是由于网络连接或数据库配置的问题,导致无法正确连接到数据库。

    解决方案: 首先,我们可以尝试排除第一种可能原因,即界面没有显示出来。可以将连接成功和连接失败的提示框显示代码放在一个按钮的槽函数中,然后通过点击按钮来触发连接操作。这样可以确保界面已经显示出来。然后,我们再排查第二种可能原因,即代码逻辑有错误。可以使用调试工具来逐步执行代码,查看是否执行到了显示提示框的代码。最后,如果排除了以上两种可能性,我们可以考虑其他原因,比如网络连接或数据库配置的问题。可以尝试使用其他方式连接数据库,或者检查数据库的配置是否正确。

    更新后的代码如下:

    #include "widget.h"
    #include "ui_widget.h"
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
        , ui(new Ui::Widget)
    {
        ui->setupUi(this);
        connect(ui->connectButton, &QPushButton::clicked, this, &Widget::connectToDatabase);
    }
    
    Widget::~Widget()
    {
        delete ui;
    }
    
    void Widget::connectToDatabase()
    {
        db = QSqlDatabase::addDatabase("QMYSQL");
        db.setDatabaseName("mydatabase");
        db.setHostName("localhost");
        db.setUserName("root");
        db.setPassword("123456");
        db.setPort(3306);
        if (db.open()) {
            QMessageBox::information(this,"连接提示","连接成功");
        }
        else {
            QMessageBox::warning(this,"连接提示","连接失败");
        }
    }
    

    对应的.ui文件的内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <ui version="4.0">
     <class>Widget</class>
     <widget class="QWidget" name="Widget">
      <property name="geometry">
       <rect>
        <x>0</x>
        <y>0</y>
        <width>400</width>
        <height>300</height>
       </rect>
      </property>
      <property name="windowTitle">
       <string>Widget</string>
      </property>
      <widget class="QPushButton" name="connectButton">
       <property name="geometry">
        <rect>
         <x>160</x>
         <y>120</y>
         <width>75</width>
         <height>23</height>
        </rect>
       </property>
       <property name="text">
        <string>Connect</string>
       </property>
      </widget>
     </widget>
     <layoutdefault spacing="6" margin="11"/>
     <resources/>
     <connections/>
    </ui>
    

    运行更新后的程序,点击Connect按钮,即可尝试连接数据库,并显示连接成功或连接失败的提示框。如果仍然无法显示提示框,可以进一步排查其他原因,或查看调试输出来获取更多的信息。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^