Qt5.9Creator读写Mysql5.7数据库(增删改查)(四)

完成前三个博客的安装配置AA, BB, CC,总得写点什么证明安装配置的没问题。

所以用Qt读写MySQL。

(一)参考链接:https://blog.csdn.net/kilotwo/article/details/79248657   写的程序。

(二)出现的问题:

1、Can't connect to MySQL server on '127.0.0.1' (10061) QMYSQL: Unable to connect"     链接数据库失败

2、QMetaObject::connectSlotsByName: No matching signal for on_pushButton_2_clicked()       2-8个button没有关联上

总是提示,这个函数没有被使用。

在这两种方式下debug,都不行。—_—##

 Qt5.9Creator读写Mysql5.7数据库(增删改查)(四)_第1张图片

Qt5.9Creator读写Mysql5.7数据库(增删改查)(四)_第2张图片

(三)解决方案:

(1)

从 X:\MySQL\lib中将 libmysql.dll 文件复制X:\Qt\Qt5.6.1\5.6\mingw49_32\bin中。

从 X:\MySQL\lib中将 libmysql.dll 文件复制X:\Qt\Qt5.6.1\5.6\msvc2017_64\bin中。

(2)

Qt5.9Creator读写Mysql5.7数据库(增删改查)(四)_第3张图片  // 添加端口号,链接中,没有添加端口号。

(3)原链接这句话不能识别,故修改如下:

Qt5.9Creator读写Mysql5.7数据库(增删改查)(四)_第4张图片

(4)Qt5.9Creator读写Mysql5.7数据库(增删改查)(四)_第5张图片    OK,可以写入数据库。但是中文有乱码,,,

新添加数据  ↓↓↓                                                                                  显示结果 ↓↓↓

Qt5.9Creator读写Mysql5.7数据库(增删改查)(四)_第6张图片    Qt5.9Creator读写Mysql5.7数据库(增删改查)(四)_第7张图片

界面有点丑,继续修改一下。然后测试其他按钮是否OK

补充,解决乱码问题:

方案一:

找到 createConnection() 函数,添加如下:

static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");                    // 本地数据库
    db.setDatabaseName("information");                 // 数据库名
    db.setUserName("root");                             // 用户名
    db.setPassword("*****");                        // 密码
    db.setPort(3307);
    // 解决中文显示乱码
    QTextCodec *codec = QTextCodec::codecForName("utf-8");
    QTextCodec::setCodecForLocale(codec);

    if(!db.open())
    {
        //QMessageBox::critical(nullptr, QObject::tr("无法打开数据库"), "无法创建数据库连接!", QMessageBox::Cancel);
        //qDebug()<<"database is established!";
        qDebug()<<"build error";
       return false;
    }
    // 如果MySQL中存在同名的表,则下面代码不会执行
    QSqlQuery query(db);
    // 使数据库支持中文
    query.exec("set name utf8");                // 表格中的列,改为utf8,必须小写,大写不行
    //query.exec("SET NAMES 'Latin1'");        // 不起作用
    query.exec();
    return true;
}

方案二:  

在构造函数中,添加两行数据: UTF8 和 GBK 均失败

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 添加
    model = new QSqlTableModel(this);
    //QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8"));
    //QTextCodec *codec = QTextCodec::codecForName("GBK");
    model->setTable("information"); 
    model->select();
    // 设置编辑策略
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    ui->tableView->setModel(model);
}

 

 

你可能感兴趣的:(Qt)