完成前三个博客的安装配置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,都不行。—_—##
(三)解决方案:
(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)
// 添加端口号,链接中,没有添加端口号。
(3)原链接这句话不能识别,故修改如下:
(4) OK,可以写入数据库。但是中文有乱码,,,
新添加数据 ↓↓↓ 显示结果 ↓↓↓
界面有点丑,继续修改一下。然后测试其他按钮是否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);
}