Qt远程连接数据库
1、设计登录界面
在ui设计师中设计登录界面 |
2、设计注册界面
3、注册按钮
3.1添加头文件
#include "clientregister.h"
3.2连接注册按钮信号与槽
private slots:
void on_registerPushButton_clicked(); //注册按钮
3.3注册按钮实现
//注册按钮
void Widget::on_registerPushButton_clicked()
{
clientRegister regDialog; //创建注册界面对话框对象
regDialog.setGeometry(this->geometry()); //设置对话框几何形状与当前对话框相同
// 显示模态对话框并点击了确定接收操作
if (regDialog.exec() == QDialog::Accepted) {
QMessageBox::information(this, "提示", "注册成功"); //弹出注册成功消息框
}
}
3.4实现点击注册按钮
在clientRegister 文件中实现 |
clientRegister.h
clientRegister.cpp
void clientRegister::on_regEnterPushButton_clicked()
{
QString newAccount = ui->newALineEdit->text(); //获取账号输入框文本
QString newPassword = ui->newPLineEdit->text(); //获取密码输入框文本
//判断账号和密码是否为空
if(newAccount.isEmpty() || newPassword.isEmpty()){
QMessageBox::warning(this, "错误", "账号和密码不能为空"); 账号或密码为空提示
return;
}
newPasswordSure newPasswordDialog(newPassword); //创建个新密码确认界面
newPasswordDialog.setGeometry(this->geometry()); //新创建的界面与当前界面重合
//按下了确认键
if(newPasswordDialog.exec() == QDialog::Accepted)
{
QSqlDatabase db = QSqlDatabase::database(); // 使用主界面的数据库连接
if(!db.isOpen()) //数据库没有打开
{
QMessageBox::critical(this, "错误", "数据库未连接");
return;
}
QSqlQuery query; //创建一个数据库查询对象
query.prepare("INSERT INTO users (account, password) VALUES (:account, :password)"); // 查询语句SQL
query.bindValue(":account", newAccount); //绑定账号键
query.bindValue(":password", newPassword); //绑定密码键
//数据库成功执行
if(query.exec())
{
QMessageBox::information(this, "成功", "注册成功"); //提示注册成功
this->close(); //关闭
}
else
{
QString error = query.lastError().text(); //获取错误信息
if(error.contains("Duplicate entry")) //如果错误信息中包含重复条目
{
QMessageBox::warning(this, "错误", "账号已存在"); //错误提示
}
else
{
QMessageBox::critical(this, "失败", "错误: " + error); //显示失败
}
}
}
}
4、登录按钮
4.1连接登录按钮信号与槽
4.2登录按钮实现
//登录按钮
void Widget::on_loginPushButton_clicked()
{
QString account = ui->accountLineEdit->text(); //获取账号输入框文本
QString password = ui->passwordLineEdit->text(); //获取密码输入框文本
//如果账号或密码输入框为空
if(account.isEmpty() && password.isEmpty())
{
QMessageBox::warning(this, "警告", "账号或密码不能为空");
}
QSqlQuery loginquery; //创建数据库查询操作
loginquery.prepare("select * from users where account =:account and password =:password"); //查询
loginquery.bindValue(":account",account); //将实际账号值绑定到参数
loginquery.bindValue(":password",password); //将实际密码值绑定到参数
//查询成功且有下一条记录
if(loginquery.exec() && loginquery.next())
{
QMessageBox::information(this, "成功", "登录成功"); //弹出查询成功信息框
}
else
{
QMessageBox::critical(this, "失败", "账号或密码错误"); //弹出查询失败信息框
}
}
5、数据库连接
5.1创建数据库对象
QSqlDatabase db; //创建数据库
5.2连接数据库
//选择数据库
db = QSqlDatabase::addDatabase("QMYSQL"); //连接数据库驱动
db.setHostName("192.168.74.128"); //设置数据库主机名
db.setUserName("users"); //设置数据库银魂
db.setDatabaseName("clientdatabase"); //设置要连接的数据库名称
db.setPassword("user"); //设置密码
//数据库连接
if(db.open())
{
QMessageBox::information(this,"数据库连接提示","连接成功"); //数据库连接成功,提示
}
else
{
QMessageBox::critical(this, "数据库连接失败",db.lastError().text()); //数据库连接失败显示错误信息
qDebug() << db.lastError();
}
6、代码地址
7、总结
Qt远程连接数据库,注册,登录完成,运行前一定要创建出数据库,否则会报错,想了 解数据库怎么创建的,也可以去看一下我另一篇博客,最后,如果大家觉得有所帮助, 可以点一下赞,谢谢大家!永远相信美好的事情即将发生! |