数据未插入MySQL数据库中

问题描述 投票:0回答:1

我正在尝试使用此代码通过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。有什么需要修改的吗?

c++ mysql qt
1个回答
0
投票

您使用错误的名称绑定到

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中使用的名称应与查询中使用的名称匹配。

© www.soinside.com 2019 - 2024. All rights reserved.