VisualStudio2019 + qt+MySql实现与Navicat连接
main.cpp
#include "Login_Widget.h"
#include <QtWidgets/QApplication>
#include <QSqlDatabase> //连接数据库
#include <QDebug>
#include <QSqlError> //输出错误信息
/*VS+Qt实现用户登录界面:
* 1.新建主窗口:
* 设计登录界面
* 2.连接数据库:
* 添加数据库SQL模块
* 项目右键-->属性-->Qt Project Setting-->Qt Modules-->Sql
* 把libmysql.lib 和 libmysql.dll文件复制到工程文件下
* 路径:D:\Windows11\Engineering\MySql5.7\lib
项目属性配置:
项目右键-->属性-->C/C++ -->附加包含目录:D:/Windlws11/Engineering/Mysql5.7/include
链接器-->输入-->附加依赖项:libmsql.lib
* 3.Qt操 作数据库
* 4.QSettings记录用户登录信息
* 5.新建子窗口:
* 项目右键-->添加-->模块-->Qt-->Qt Widget Class
* 6.实现窗口切换
* 7.实现最小化窗口和关闭窗口
* 8.实现窗口整体可拖动
*/
int main(int argc, char* argv[])
{
QApplication a(argc, argv);
//连接Mysql数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //创建mysql数据库连接
db.setHostName("localhost"); //主机服务器
db.setPort(3306); //端口
db.setUserName("root"); //用户名
db.setPassword("*****"); //密码
db.setDatabaseName("mydb"); //数据库名
if (db.open())
{
qDebug() << "数据库连成功";
}
else
{
qDebug() << "数据库连成功";
qDebug() << db.lastError().text();
}
Login_Widget w;
w.show();
return a.exec();
}
Login_Widget.cpp
#include "Login_Widget.h"
#include "MainWidget.h" //跳转到MainWidget窗口
#include <QSqlQuery> //操作数据库
#include <QSqlError> //输出错误信息
#include <QDebug>
#include <QMessageBox>
#include <QSettings> //读写配置文件
//#pragma execution_character_set("utf-8") //设置字符编码
Login_Widget::Login_Widget(QWidget* parent)
: QWidget(parent)
{
ui.setupUi(this);
//从配置文件中读取用户名和密码
QSettings setting("config.ini", QSettings::IniFormat);
QString account = setting.value("section/account").toString();
QString password = setting.value("section/password").toString();
ui.accountEdit->setText(account);
ui.passwordEdit->setText(password);
//实现用户注册功能 并 向数据库插入数据
connect(ui.registBtn, &QPushButton::clicked, this, [=]()
{
//接收用户输入
QString account = ui.accountEdit->text(); //用户账号
QString password = ui.passwordEdit->text(); //密码
//插入数据
QSqlQuery query; //操作数据库
QString qs = QString("insert into user(account,password) values('%1','%2')").arg(account).arg(password);
if (query.exec(qs))
{
//如果插入数据成功
QMessageBox::information(this, "注册", "注册成功");
}
else
{
QMessageBox::information(this, "注册", "注册失败");
qDebug() << query.lastError(); //输出错误信息
return;
}
});
//实现用户登录并查询数据信息
connect(ui.loginBtn, &QPushButton::clicked, this, [=]()
{
//接收用户输入的数据
QString account = ui.accountEdit->text();//用户账户
QString password = ui.passwordEdit->text();//密码
//查询数据:
QSqlQuery query; //操作数据库
QString qs = QString("select * from user where account = '%1' and password = '%2'").arg(account).arg(password);
if (!query.exec(qs))
{
//如果没有查询到记录
qDebug() << query.lastError().text();
return;
}
//获取查询数据:
if (query.next())
{
//获取数据
QMessageBox::information(this, "登录", "登录成功");
//实现界面跳转
this->hide(); //隐藏当前窗口
MainWidget* tw = new MainWidget(); //创建新窗口
tw->show(); //显示新建窗口
//在配置文件中记录账号和密码
if (ui.checkBox->isChecked())
{
//选中
//创建配置文件
QSettings setting("config.ini", QSettings::IniFormat); //配置文件在工程目录下
//把用户账号和密码写到配置文件中
setting.beginGroup("section"); //节
setting.setValue("account", account);
setting.setValue("password", password);
setting.endGroup(); //结束
}
}
else
{
QMessageBox::information(this, "登录", "登录失败");
qDebug() << query.lastError().text();
}
});
}
Login_Widget::~Login_Widget()
{}