#include "widget.h" #include "ui_widget.h" #include <QSqlQuery> //操作数据库 #include <QDebug> //输出错误信息 #include <QSqlError> // #include <QMessageBox> //#include <TestWidget3.h> //跳转窗口头文件 #include <QCheckBox> Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } void Widget::on_regButton_clicked() { //密码 //插入数据 QSqlQuery query; query.prepare("INSERT INTO userinfo(account,password) VALUES (':value1', ':value2')"); query.bindValue(":value1",ui->accountEdit->text() ); query.bindValue(":value2",ui->passwordedit->text()); if(query.exec()){ //如果插入数据成功 QMessageBox::information(this,"注册","注册成功"); }else{ QMessageBox::information(this,"注册","注册失败"); } } void Widget::on_loginButton_clicked() { //接收用户输入 QSqlQuery query; //操作数据库 query.prepare("select * from user where account = ':value1' and password= ':value2'"); query.bindValue(":value1", ui->accountEdit->text()); query.bindValue(":value2", ui->passwordedit->text()); if(!query.exec()){ //如果没有查到记录 QMessageBox::information(this,"登录","登录失败"); } //获取查询的数据: if(query.next()){ //获取到数据 QMessageBox::information(this,"登录","登录成功"); }else{ QMessageBox::information(this,"登录","登录失败"); } } 这段代码用于实现用户注册与登录功能,但运行时总是注册失败,登录失败,请帮我修改这段代码,修复bug
时间: 2024-04-15 12:28:47 浏览: 14
在你提供的代码中,有几个问题需要修复:
1. 在插入数据时,你在SQL查询中使用了单引号将bindValue的值括起来,这会导致查询失败。正确的写法是不使用单引号,如下所示:
```cpp
query.prepare("INSERT INTO userinfo(account,password) VALUES (:value1, :value2)");
```
2. 在登录查询时,你也在SQL查询中使用了单引号将bindValue的值括起来,这会导致查询失败。正确的写法是不使用单引号如下所示:
```cpp
query.prepare("select * from user where account = :value1 and password = :value2");
```
修复后的代码如下:
```cpp
#include "widget.h"
#include "ui_widget.h"
#include <QSqlQuery> //操作数据库
#include <QDebug> //输出错误信息
#include <QSqlError> //
#include <QMessageBox>
//#include <TestWidget3.h> //跳转窗口头文件
#include <QCheckBox>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_regButton_clicked()
{
//密码
//插入数据
QSqlQuery query;
query.prepare("INSERT INTO userinfo(account,password) VALUES (:value1, :value2)");
query.bindValue(":value1",ui->accountEdit->text() );
query.bindValue(":value2",ui->passwordedit->text());
if(query.exec()){ //如果插入数据成功
QMessageBox::information(this,"注册","注册成功");
}else{
QMessageBox::information(this,"注册","注册失败");
}
}
void Widget::on_loginButton_clicked()
{
//接收用户输入
QSqlQuery query; //操作数据库
query.prepare("select * from user where account = :value1 and password = :value2");
query.bindValue(":value1", ui->accountEdit->text());
query.bindValue(":value2", ui->passwordedit->text());
if(!query.exec()){ //如果没有查到记录
QMessageBox::information(this,"登录","登录失败");
}
//获取查询的数据:
if(query.next()){ //获取到数据
QMessageBox::information(this,"登录","登录成功");
}else{
QMessageBox::information(this,"登录","登录失败");
}
}
```
请注意,这只是修复了你提供的代码中可能导致注册失败和登录失败的问题。如果还有其他问题,请提供更多细节或错误信息。