我正在尝试使用此代码通过qt连接MySQL数据库。我已经成功构建了Qt的MySQL插件。但是,当我尝试插入数据QT时,它会显示未插入的消息框数据。查询有什么问题吗?这是register.h
#ifndef REGISTER_H
#define REGISTER_H
#include <QDialog>
#include <QtSql>
#include <QSqlDatabase>
#include <QMessageBox>
namespace Ui {
class Register;
}
class Register : public QDialog
{
Q_OBJECT
public:
explicit Register(QWidget *parent = nullptr);
~Register();
private slots:
void on_pushButton_clicked();
private:
Ui::Register *ui;
QSqlDatabase database;
};
#endif
这是register.cpp
#include "register.h"
#include "ui_register.h"
Register::Register(QWidget *parent) :
QDialog(parent),
ui(new Ui::Register)
{
ui->setupUi(this);
}
Register::~Register()
{
delete ui;
}
void Register::on_pushButton_clicked()
{
//database connection
database = QSqlDatabase::addDatabase("QMYSQL");
database.setHostName("localhost");
database.setUserName("root");
database.setPassword("");
database.setDatabaseName("electricity");
if(database.open()){
QString username = ui ->lineEdit ->text();
QString password = ui ->lineEdit_2 ->text();
QString fullname = ui ->lineEdit_3 ->text();
QString adress = ui ->lineEdit_4 ->text();
QString telephone = ui ->lineEdit_5 ->text();
// insert query
QSqlQuery qry;
qry.prepare("INSERT INTO user_reg_elec (username, password, fullname, address, teli)"
"VALUES (:username, :password, :fullname, :adress, :telephone)");
qry.bindValue(":lineEdit", username);
qry.bindValue(":lineEdit_2", password);
qry.bindValue(":lineEdit_3", fullname);
qry.bindValue(":lineEdit_4", adress);
qry.bindValue(":lineEdit_5", telephone);
if(qry.exec()){
QMessageBox::information(this, "Data Insetrted", "Data Enter sucess");
}
else {
QMessageBox::information(this, "Data not inserted", "Not Sucessfully");
}
}
else{
QMessageBox::information(this, "ERROR","Database Not Connected Sucessfully. Please CheckYyour Internet Connection");
}
}
我得到了这个error。有什么需要修改的吗?
您使用错误的名称绑定到
qry.prepare("INSERT INTO user_reg_elec (username, password, fullname, address, teli)"
"VALUES (:username, :password, :fullname, :adress, :telephone)");
qry.bindValue(":lineEdit", username);
应该是
qry.prepare("INSERT INTO user_reg_elec (username, password, fullname, address, teli)"
"VALUES (:username, :password, :fullname, :adress, :telephone)");
qry.bindValue(":username", username);
等等
bindValue
中使用的名称应与查询中使用的名称匹配。