|
《QT与QT Quick开发实战精解》书中4-5中,我自己给添加了修改密码的功能,但是出现这样的情况,前几次运行,都可以顺利的把密码改过来,但是最后就怎么都改不过来了,下面是的代码,源代码我也上传了,
这个是创建数据库连接的:
static bool createConnection(){ QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setHostName("yafeilinux"); db.setDatabaseName("data.db"); db.setUserName("yafei"); db.setPassword("123456"); if (!db.open()) { //提示出错 return false; } QSqlQuery query; // 创建分类表 query.exec("create table type(id varchar primary key, name varchar)"); query.exec(QString("insert into type values('0', '请选择类型')")); query.exec(QString("insert into type values('01', '电视')")); query.exec(QString("insert into type values('02', '空调')")); // 创建品牌表 query.exec("create table brand(id varchar primary key, name varchar, " "type varchar, price int, sum int, sell int, last int)"); query.exec(QString("insert into brand values('01', '海信', '电视', 3699, 50, 10, 40)")); query.exec(QString("insert into brand values('02', '创维', '电视', 3499, 20, 5, 15)")); query.exec(QString("insert into brand values('03', '海尔', '电视', 4199, 80, 40, 40)")); query.exec(QString("insert into brand values('04', '王牌', '电视', 3999, 40, 10, 30)")); query.exec(QString("insert into brand values('05', '海尔', '空调', 2899, 60, 10, 50)")); query.exec(QString("insert into brand values('06', '格力', '空调', 2799, 70, 20, 50)")); // 创建密码表 query.exec("create table password(pwd varchar primary key)"); query.exec("insert into password values('123456')"); return true;}
下面这个是我更新数据库密码的操作,不是到是否有问题(主要帮我看看数据库的操作):
void mmChangeDialog::on_okBnt_clicked(){ if((ui->opwdlineEdit->text().isEmpty())||ui->pwdlineEdit_2->text().isEmpty()||ui->pwdlineEdit_3->text().isEmpty()) { QMessageBox::information(this, tr("请输入密码"), tr("请先输入密码再确认!"), QMessageBox::Ok); ui->opwdlineEdit->setFocus(); //密码输入框变为焦点部件 } else { QSqlQuery query; query.exec("select pwd from password"); query.next(); if (query.value(0).toString() == ui->opwdlineEdit->text()) { if(ui->pwdlineEdit_2->text() == ui->pwdlineEdit_3->text()) { if(ui->opwdlineEdit->text() != ui->pwdlineEdit_2->text()){ //QSqlQuery query; // 事务操作 QSqlDatabase::database().transaction(); bool cmm = query.exec( QString("update password set pwd=%1") .arg(ui->pwdlineEdit_2->text())); if (cmm) { QSqlDatabase::database().commit(); QMessageBox::information(this, tr("提示"), tr("修改成功!"), QMessageBox::Ok); } else { QMessageBox::information(this, tr("提示"), tr("修改失败!"), QMessageBox::Ok); QSqlDatabase::database().rollback(); } ui->opwdlineEdit->clear(); ui->pwdlineEdit_2->clear(); ui->pwdlineEdit_3->clear(); ui->opwdlineEdit->setFocus(); //密码输入框变为焦点部件 QDialog::accept(); } else { QMessageBox::information(this, tr("密码错误"), tr("新旧密码不能相同!"), QMessageBox::Ok); ui->opwdlineEdit->clear(); ui->pwdlineEdit_2->clear(); ui->pwdlineEdit_3->clear(); ui->opwdlineEdit->setFocus(); //密码输入框变为焦点部件 } } else { QMessageBox::information(this, tr("密码错误"), tr("新密码输入不相同!"), QMessageBox::Ok); ui->opwdlineEdit->clear(); ui->pwdlineEdit_2->clear(); ui->pwdlineEdit_3->clear(); ui->opwdlineEdit->setFocus(); //密码输入框变为焦点部件 } } else { QMessageBox::warning(this, tr("密码错误"), tr("旧密码输入错误,请重新输入!"), QMessageBox::Ok); ui->opwdlineEdit->clear(); ui->pwdlineEdit_2->clear(); ui->pwdlineEdit_3->clear(); ui->opwdlineEdit->setFocus(); } }}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|