QT和Sql Server做一个登录页面

首先,需要需要先获取电脑和数据库的一些信息,这里先不多说,CSDN上有很多教程。

需要获取的信息有:

 QSqlDatabase db1 = QSqlDatabase::addDatabase("QODBC");   //数据库驱动类型为SQL Server
 qDebug() << "ODBC driver?" << db1.isValid();
 QString dsn = QString::fromLocal8Bit("crytest2");      //数据源名称

 db1.setHostName("loaclhost");                        //选择本地主机,直接写localhost
 db1.setDatabaseName(dsn);                            //设置数据源名称
 db1.setUserName("load");                               //登录用户
 db1.setPassword("*****");

先放上一段我的函数实现的代码,这段代码的主要功能就是在点击管理员的登录按钮后,在数据库的Administrator表查询是否存在该管理员用户和密码,从而实现管理员登录。

void MainWindow::on_pushButton_3_clicked()
{
    QSqlDatabase db1 = QSqlDatabase::addDatabase("QODBC");   //数据库驱动类型为SQL Server
    qDebug() << "ODBC driver?" << db1.isValid();
    QString dsn = QString::fromLocal8Bit("crytest2");      //数据源名称

    db1.setHostName("loaclhost");                        //选择本地主机,127.0.1.1
    db1.setDatabaseName(dsn);                            //设置数据源名称
  
    db1.setUserName("load");                               //登录用户
    db1.setPassword("******");

    if (!db1.open()) {                                     //打开数据库
        qDebug() << "db1 cannot open";
        QMessageBox::critical(this, QObject::tr("Database error"), "db1 cannot open");
        //return false;                                   //打开失败
    }

    // 获取登录信息
    QString name = ui->lineEdit->text();
    QString password = ui->lineEdit_2->text();

    // 准备SQL查询
    QString sql = "SELECT *FROM Administrators";
   // while()

    // 创建QSqlQuery对象并绑定参数
    QSqlQuery qy("SELECT *FROM Administrators");
    while(qy.next()){
        QString nname=qy.value(1).toString();
        QString ppass=qy.value(2).toString();
        if(nname==name&&ppass==password){
            // 登录成功
            qDebug()<<"登录成功!"<<Qt::endl;
            teapg *t = new teapg();
            t->show();
            this->hide();
            return ;
        }
        else{
            // 密码不匹配
            qDebug()<<"登录失败!"<<Qt::endl;
            QMessageBox::critical(this, "错误", "用户名或密码输入错误,请重新输入。");
            ui->lineEdit->clear();
            ui->lineEdit_2->clear();
        }
    }

    // 关闭数据库连接
    db1.close();
}

 

再着重放一下我是怎么实现数据库表的查询的:

  while(qy.next()){
        QString nname=qy.value(1).toString();
        QString ppass=qy.value(2).toString();
        if(nname==name&&ppass==password){
            // 登录成功
            qDebug()<<"登录成功!"<<Qt::endl;
            teapg *t = new teapg();
            t->show();
            this->hide();
            return ;
        }
        else{
            // 密码不匹配
            qDebug()<<"登录失败!"<<Qt::endl;
            QMessageBox::critical(this, "错误", "用户名或密码输入错误,请重新输入。");
            ui->lineEdit->clear();
            ui->lineEdit_2->clear();
        }
    }

我是在sql server上面创建好了表,并且添加了几行管理员用户名和密码。

CREATE TABLE Administrators (
    ID INT PRIMARY KEY IDENTITY(1,1), -- 自动递增的主键
    Name NVARCHAR(255) NOT NULL UNIQUE,
    Password NVARCHAR(255) NOT NULL
);
INSERT INTO Administrators (Name, Password) VALUES ('lee', '11234');
INSERT INTO Administrators (Name, Password) VALUES ('tom', '23415');


最后,希望大家都能少error,真的是很多时候想sha 掉QT的心都有了...... 

第一次动手写文章,没什么高大的愿望,大家觉得有用帮忙点个赞就好了qaq。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值