"参数计数不匹配" QT c ++

时间:2016-08-27 22:27:24

标签: c++ qt

当我第一次尝试使用我的代码时 它是

    #include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QMessageBox"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPixmap pix("C:/Users/AMR.EngAmr/Downloads/1561136.jpg");
    ui->label_pic->setPixmap(pix);


        if(!connOpen())
                ui->label_9->setText("فشل الاتصال بقاعدة البيانات");
        else
            ui->label_9->setText("تم الاتصال بقاعدة البيانات ");
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QString Name,period,group,Weight,Notes,Notes2,Notes3,pressure;
    Name=ui->lineEdit_name->text();
    period=ui->lineEdit_2->text();
    group=ui->lineEdit_group->text();
  Weight=ui->lineEdit_weight->text();
   Notes2=ui->lineEdit_notes2->text();
  pressure=ui->lineEdit_presure->text();
  Notes=ui->lineEdit_notes->text();
   Notes3=ui->lineEdit_notes3->text();
if(!connOpen()){
    qDebug()<<"Faield to open the database";
    return;
   }
   connOpen();
   QSqlQuery qry;
 qry.prepare("insert into Patients (Name,period,group,Weight,Notes2,pressure,Notes,Notes3 ) values('"+Name+"','"+period+"''"+group+"','"+Weight+"','"+Notes2+"','"+pressure+"','"+Notes+"''"+Notes3+"')");

   if(qry.exec())
    {
        QMessageBox::information(this,tr("Save"),tr("Saved"));
        connClose();
    }
    else
    {
         QMessageBox::information(this,tr("error::"),qry.lastError().text());

        }
}

我收到错误没有查询无法获取行 我尝试了一个解决方案,我的代码是

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QMessageBox"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPixmap pix("C:/Users/AMR.EngAmr/Downloads/1561136.jpg");
    ui->label_pic->setPixmap(pix);


        if(!connOpen())
                ui->label_9->setText("فشل الاتصال بقاعدة البيانات");
        else
            ui->label_9->setText("تم الاتصال بقاعدة البيانات ");
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QString Name,period,group,Weight,Notes,Notes2,Notes3,pressure;
    Name=ui->lineEdit_name->text();
    period=ui->lineEdit_2->text();
    group=ui->lineEdit_group->text();
  Weight=ui->lineEdit_weight->text();
   Notes2=ui->lineEdit_notes2->text();
  pressure=ui->lineEdit_presure->text();
  Notes=ui->lineEdit_notes->text();
   Notes3=ui->lineEdit_notes3->text();
if(!connOpen()){
    qDebug()<<"Faield to open the database";
    return;
   }
   connOpen();
   QSqlQuery qry;
 qry.prepare("insert into Patients (:Name,:period,:group,:Weight,:Notes2,:pressure,:Notes,:Notes3 ) values('"+Name+"','"+period+"''"+group+"','"+Weight+"','"+Notes2+"','"+pressure+"','"+Notes+"''"+Notes3+"')");
 qry.bindValue(":Name", Name);
 qry.bindValue(":period", period);
 qry.bindValue(":group", group);
 qry.bindValue(":Weight", Weight);
 qry.bindValue(":Notes2", Notes2);
 qry.bindValue(":pressure", pressure);
 qry.bindValue(":Notes", Notes);
 qry.bindValue(":Note3", Notes3);

   if(qry.exec())
    {
        QMessageBox::information(this,tr("Save"),tr("Saved"));
        connClose();
    }
    else
    {
         QMessageBox::information(this,tr("error::"),qry.lastError().text());

        }
}

我得到了错误 参数计数不匹配 我必须在两天内完成它的问题

1 个答案:

答案 0 :(得分:0)

看起来你正在混淆你的价值绑定。当您使用它时,您不会将值放入查询中(绑定值的目的是避免这种情况!)。如果列名正确,这可能有效:

qry.prepare("insert into Patients "
            "(Name,period,group,Weight,Notes2,pressure,Notes,Notes3) " 
            "values(:Name,:period,:group,:Weight,:Notes2,:pressure,:Notes,:Notes3)");

(关于分割这样的字符串的注意事项,您可能不熟悉这些字符串:在C和C ++中编写"foo" "bar""foobar"相同。)

此外,documentation is your friend。 Qt主要有很好的文档,在这种情况下,似乎完全涵盖了你所要求的内容。