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

数据库的操作问题,

0
回复
3280
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2015-10-14 18:09:50 显示全部楼层 |阅读模式
《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
回复

使用道具 举报

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

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