60黑马QT笔记之SQLite

60黑马QT笔记之SQLite

1 与MYSQL的区别
1)SQLite是本地数据库,不需要和MYSQL一样需要连接;
2)插入时不支持自动增长,所以主键例如id,在输入时需要自己去控制;
3)使用时需要先提前建好后缀为xxx.db的文本文件。

2 代码逻辑

    //打印Qt支持的数据库驱动
    qDebug() << QSqlDatabase::drivers();


    // 1 添加Sqlite数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    // 2 设置数据库 QSQLITE是本地数据库 不需要连接
    db.setDatabaseName("C:/Users/Administrator/Desktop/MyQtCode/day08/info.db");

    // 3 打开数据库
    if( !db.open() )
    {
        QMessageBox::warning(this, "错误", db.lastError().text());
        return;
    }

    // 4 操作(创表和插入等等)
    // 注意SQLite是不支持自动增长的 所以id需要自己赋值
    QSqlQuery query;
    query.exec("create table student(id int primary key, name varchar(255), age int, score int);");

    // ODBC风格批量插入步骤 1预处理插入占位符 2用可变列表给占位符赋值 3添加绑定  4执行预处理
    // 1 预处理插入占位符
    query.prepare("insert into student(name, age, score) values(?, ?, ?)");

    // 2 用可变列表给占位符赋值
    QVariantList nameList;
    nameList << "xiaoming" << "xiaolong" << "xiaojiang";
    QVariantList ageList;
    ageList << 11 << 22 << 33;      // age为int,不能用双引号"22"
    QVariantList scoreList;
    scoreList << 59 << 69 << 79;

    // 3 添加绑定 按顺序绑定
    query.addBindValue(nameList);
    query.addBindValue(ageList);
    query.addBindValue(scoreList);

    // 4 执行预处理
    query.execBatch();

    // 最后遍历
    query.exec("select * from student");
    while(query.next()) //一行一行遍历
    {
        //取出当前行的内容
        qDebug() << query.value(0).toInt()
                 << query.value(1).toString()
                 << query.value("age").toInt()
                 << query.value("score").toInt();
    }

最后可以知道,这种数据库不大,使用起来也是比较简单,如果只是小项目开发,那么保存数据的时候也是不错的选择。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值