找回密码
 立即注册
收起左侧

用户登录,只能取到第一条数据,别的账户无法正常登录

5
回复
5871
查看
[复制链接]
累计签到:24 天
连续签到:1 天
来源: 2016-9-2 09:44:17 显示全部楼层 |阅读模式
1Qter豆
QSqlDatabase db = QSqlDatabase::database("h_user");
QString passCltext = ui->passEdit->text();
QString userName = ui->userEdit->text();

  if(userName==""){
        QMessageBox::critical(0, "No username provided","You left the username blank");
        return;     }
    if(passCltext==""){
     QMessageBox::critical(0, "No password provided","You left the password blank");
     return;
    }

//////////////////////////////////////////////////////////////////////////
/////////////////////////////////通过登录框的username,查找数据,但是似乎只能取到第一条。
QSqlQuery query;
query.exec("SELECT * from h_user where UserName = userName");
query.bindValue(":UserName", userName);
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////

query.next();
QVariant w = query.value(1);
QVariant v = query.value(2);
       

       

if(userName == w.toString() && passCltext==v.toString()){
QMessageBox::information(0,QString::fromLocal8Bit("登录成功"),QStringLiteral("登录成功"),QMessageBox::Ok);

if(userName == "002"){
        mainWindow *w = new mainWindow();
        w -> show();
}else{
        adduser *w = new adduser();
        w -> show();
        }
}else{
        QMessageBox::warning(this,QString::fromLocal8Bit("警告"),QStringLiteral("用户名或者密码错误"),QMessageBox::Ok);
        this -> ui -> userEdit -> clear();
        this -> ui -> passEdit -> clear();
        return;


最佳答案

查看完整内容

查询语句有问题:query.exec("SELECT * from h_user where UserName = userName"); 你这句查找条件是 UserName = userName中,userName是你自己设定的变量,并非数据库 字段或标准类型(如INT,CHAR*等)。你可以试着这样写: QString cmd = QString("SELECT * from h_user where UserName = %1").arg(userName); query.exec(cmd);
回复

使用道具 举报

累计签到:10 天
连续签到:1 天
2016-9-2 09:44:18 显示全部楼层
查询语句有问题:query.exec("SELECT * from h_user where UserName = userName");
你这句查找条件是 UserName = userName中,userName是你自己设定的变量,并非数据库
字段或标准类型(如INT,CHAR*等)。你可以试着这样写:
QString cmd = QString("SELECT * from h_user where UserName = %1").arg(userName);
query.exec(cmd);
回复

使用道具 举报

累计签到:24 天
连续签到:1 天
2016-9-2 14:10:52 显示全部楼层
木的码农 发表于 2016-9-2 09:44
查询语句有问题:query.exec("SELECT * from h_user where UserName = userName");
你这句查找条件是 UserN ...

谢谢您,已经解决了。Qt新人,没有C++基础。为了实现去实现的。还想问您,您这个搞过。用户授权吗?有没有代码可以分享呢。
回复

使用道具 举报

累计签到:10 天
连续签到:1 天
2016-9-5 15:07:01 显示全部楼层
不好意思,暂时没有,我也只是会一点数据库
回复

使用道具 举报

累计签到:24 天
连续签到:1 天
2016-9-7 09:54:33 显示全部楼层
木的码农 发表于 2016-9-5 15:07
不好意思,暂时没有,我也只是会一点数据库

您帮我看看,我这个update语句怎么修改呢,也是一直报错。谢谢。

        QSqlDatabase db = QSqlDatabase::database("h_user");
        QString oldpass = ui->lineEdit->text();
        QString newpass = ui->lineEdit_2->text();
        QString newpass1 = ui->lineEdit_3->text();

        if(newpass==newpass1) {       
                QSqlQuery query(db);
                QString cmd = QString("UPDATE h_user SET UserPassword = ? WHERE UserID = %1").arg(1);
                query.prepare(cmd);
                query.bindValue(2,newpass);    //2代表value(2),数据库三个字段
                query.exec();
回复

使用道具 举报

累计签到:10 天
连续签到:1 天
2016-9-18 13:23:29 显示全部楼层
你最好找些基础资料看看,数据库查询更新等操作语句,是对数据库中的表进行操作,你的表在哪里?
QSqlDatabase db = QSqlDatabase::database("h_user");这句只是获取数据库,然后需要执行打开,里
面有建好的表,就直接对表操作,没有就要先建表。h_user不是表吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了