错误:'+' 不能添加两个指针 [关闭]

Posted

技术标签:

【中文标题】错误:\'+\' 不能添加两个指针 [关闭]【英文标题】:Error :'+' cannot add two pointers [closed]错误:'+' 不能添加两个指针 [关闭] 【发布时间】:2017-06-10 16:31:26 【问题描述】:

出现错误“'+' 无法添加两个指针”。

谁能解释一下到底出了什么问题/如何解决?

信息:movedb 得到了包含 User_ID(整数)和密码(文本)的表用户。现在生成 error 的行,之前返回 false ,所以我认为 User_ID 由于类型(Qstring 和整数)无法与 username 进行比较并进行了转换。

登录.cpp

#include "login.h"
#include "ui_login.h"

Login::Login(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Login)

    ui->setupUi(this);
    db=QSqlDatabase::addDatabase("Qmysql");
    db.setHostName("localhost");
    db.setUserName("root");
    db.setPassword("");
    db.setDatabaseName("movedb");
    if(!db.open())
    
        ui->Status->setText("Status: Failed to connect with database");
    
    else
    
        ui->Status->setText("Status: Ready to LogIn");
    


Login::~Login()

    delete ui;


void Login::on_Login_2_clicked()

    int username;
    QString password;
    username=ui->lineEdit_Username->text().toInt();
    password=ui->lineEdit_Password->text();
    if(!db.isOpen())
    
        qDebug()<<"Failed to open database";
        return;
    
    QSqlQuery qry;
    if(qry.exec("select * from user where User_ID='"+username+"' AND password'"+password+"'"))
    
        int count=0;
        while(qry.next())
        
           count++;
        
        if(count==1)
        
            ui->Login_status->setText("You have logged in");
        
        if(count>1)
        
            ui->Login_status->setText("Something went wrong - please contact with admin");
        
        if(count<1)
        
            ui->Login_status->setText("Failed to LogIn");
        
    


    else
    
        ui->label->setText("Something is very Wrong ");
    

-产生错误的行:

 if(qry.exec("select * from user where User_ID='"+username+"' AND password'"+password+"'"))

【问题讨论】:

拥有原始指针?有智能指针或简单的成员变量。 【参考方案1】:

您正在添加char*intchar*QString。此外,查询中的= 缺失,并且数字不应包含在引号中。应该是:

if(qry.exec("select * from user where
    User_ID="+QString::number(username)+" AND password='"+password+"'"))

但更好的办法是准备好查询以避免这种情况:

qry.prepare("select * from user where User_ID=:userid AND password=':password'");
qry.bindValue(":userid",username);
qry.bindValue(":password",password);
qry.exec();

【讨论】:

以上是关于错误:'+' 不能添加两个指针 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥关系运算符不能在指针和数组中工作[关闭]

返回指针时出现分段错误[关闭]

指向基类错误成员函数的指针[关闭]

使用 strcmp 取消引用指向不完整类型错误的指针 [关闭]

C ++从向量中删除指针会导致堆错误

向 QGraphicsScene 添加项目的两个错误