Qt学习记录——数据库的配置及使用

Qt配置数据库的使用参考连接:https://subingwen.cn/qt/sql-driver/

1、连接数据库

    #include <QSqlDatabase>
    #include <QSqlError>
    #include <QSqlQuery>
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");//数据库服务器IP
    db.setPort(3306);           //端口号
    db.setUserName("root");     //用户名
    db.setPassword("123456");   //数据库密码
    db.setDatabaseName("Table_Name");   //数据库名
    bool ok = db.open();

    if (ok){
        qDebug()<<"link success";
    }
    else {
        qDebug()<<"link failed because"<<db.lastError().text();
    }

2、查找数据库

QSqlQuery q_select(db);
q_select.prepare("SELECT * FROM slice_v2");
q_select.exec(); //运行数据库
//查找方式1:按表头的列数去查找,列数从0开始
QList<int> cpu;
while(q_select.next())//遍历每一行
 {
        cpu.append(q_select.value(22).toInt());
 }
//查找方式2:按表头的名字去查找
QList<int> cpu;
while(q_select.next())
 {
        cpu.append(q_select.value("cn_cpu").toInt());

 }

数据库筛选WHERE:
 

1、方式一:
 QSqlQuery q_select(db);
 q_select.prepare("SELECT * FROM slice_v2 WHERE TRIM(status)='11'");
//选择表元素status的值为"11"  利用WHERE进行条件的选择
 q_select.exec(); //运行数据库

2、方式二:

QSqlQuery q_select(db);
q_select.prepare("SELECT * FROM slice_v2 WHERE slice_name = :slice_name");
q_select.bindValue(":slice_name", str_name);
//选择name的值为str_name的那行  利用WHERE进行条件的选择
q_select.exec();

3、对数据库插值
 

QSqlQuery query;
                                       // 准备插入值的SQL语句
query.prepare("INSERT INTO slice_v2 (slice_name,slice_type,num_ue,cn_storage,cn_cpu,bw_limit) "
            "VALUES (:slice_name,:slice_type,:num_ue,:cn_storage,:cn_cpu,:bw_limit)");
query.bindValue(":slice_name", str_name);
query.bindValue(":slice_type", "control");
query.bindValue(":num_ue", str_num);
query.bindValue(":bw_limit", str_bps);
query.bindValue(":cn_cpu", str_cpu);
query.bindValue(":cn_storage", str_storage);
query.exec();

4、更新数据库
 

QSqlQuery q_update(db);
q_update.prepare("UPDATE slice_v2 SET bw_limit = :bps, cn_cpu = :cpu, cn_storage = :storage WHERE slice_name = :name");
//WHERE 为筛选表的条件,选择name元素为sliceArray[i].slice_name的那一行进行更新
q_update.bindValue(":name", sliceArray[i].slice_name);//sliceArray[i].slice_name为要更新的具体数值
q_update.bindValue(":bps", sliceArray[i].bandwidth+remainingBandwidth - (str_bps.toFloat()-have));
q_update.bindValue(":cpu", sliceArray[i].cpu);
q_update.bindValue(":storage", sliceArray[i].storage);
if (q_update.exec()) {
   qDebug() << "Update query executed successfully.";
} else {
   qDebug() << "Update query failed:" << q_update.lastError().text();
}

5、删除

QSqlQuery q_delete(db);
q_delete.prepare("DELETE FROM slice_v2 WHERE slice_name = :name");
q_delete.bindValue(":name", str_name);
q_delete.exec();
//删除name为str_name的那一行的记录

6、注意
每次查找值时都需要用next遍历才行!!!我有时候会忘

//每次查找值时都需要用next遍历才行!!!我有时候会忘
    QSqlQuery q_select(db);
    q_select.prepare("SELECT * FROM slice_v2 WHERE slice_name = :slice_name");
    q_select.bindValue(":slice_name", str_name);
    q_select.exec();

    while(q_select.next()) //遍历
    {
       QString name = q_select.value("slice_name").toString();
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值