首先,需要需要先获取电脑和数据库的一些信息,这里先不多说,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。