课程设计总结之Qt(2)

数据库增删改查:

Qt里面有很多和操作数据库相关的类库:

QSqlQuery对象

查询:

    getid=ui->inputid->text();  //获取文本内容
    QSqlDatabase::database().contains();  //数据库开始一个事务 
    QSqlQuery query; //建立查询语句
    query.exec("select * from usertable");
    while(query.next()) //遍历
    {
        if(getid==query.value("账号").toString())  //把找到的信息显示
        {
            QString getpw=query.value("密码").toString();
            QString getname=query.value("姓名").toString();
            QString getnumber=query.value("手机").toString();
            QString getemail=query.value("邮箱").toString();
            ui->pw->setText(getpw); //把内容显示
            ui->name->setText(getname);
            ui->number->setText(getnumber);
            ui->email->setText(getemail);
            break;
        }
    }

QSqlQuery对象提供了next()方法对数据表进行遍历,query.exec()是个重载的函数,参数可以是sql语句,但必须是QString类型的字符串。

插入:

        QSqlQuery query;
        //插入数据
        query.prepare("INSERT INTO INSTRUTABLE(仪器编号,监测地点,仪器描述)VALUES(?,?,?);");//?是占位符
        query.addBindValue(getid);
        query.addBindValue(ui->space->text());
        query.addBindValue(ui->info->toPlainText());
        if(query.exec())
        {
            [=](){
                QMessageBox *tip=new QMessageBox;
                tip->setAttribute(Qt::WA_DeleteOnClose);
                tip->question(this,"提示","添加成功",QMessageBox::Ok);
            }();
        }

query对象可以直接执行sql语句,字段对应的值可以用?作为占位符,利用成员方法addBindValue()就可以用变量代替?,

修改:

    QString newpw=ui->pw->text(); //获取输入的文本内容
    QString newname=ui->name->text();
    QString newnumber=ui->name->text();
    QString newemail=ui->email->text();
    QString newid=ui->id->text();

    QSqlDatabase::database().contains();  //数据库开始一个事务
    //更新数据
    QSqlQuery query;
    query.prepare("UPDATE USERTABLE SET 密码=?,姓名=?,手机=?,邮箱=? where 账号=?;");
    query.addBindValue(newpw);
    query.addBindValue(newname);
    query.addBindValue(newnumber);
    query.addBindValue(newemail);
    query.addBindValue(newid);
    if(query.exec())
    {
    [=](){
      QMessageBox *tip=new QMessageBox;
      tip->setAttribute(Qt::WA_DeleteOnClose);
      tip->question(this,"提醒","修改成功",QMessageBox::Ok);
    }();
    }

删除:

        QString sql=QString("delete from usertable where 账号='%1'").arg(getid);
        query.exec(sql);
        [=](){
            QMessageBox *tip=new QMessageBox;
            tip->setAttribute(Qt::WA_DeleteOnClose);
            tip->question(this,"提示","删除成功",QMessageBox::Ok);
        }();

QString对象也可以占位,如果有对个参数,只需用不同的占位符QString("%1,%2,%3").arg(str1,str2,str3);注意QString的占位符不能一样。

 

 

;