先创建info.db文件

    .pro文件

    1. QT += core gui sql

    widget.cpp

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. #include <QDebug>
    4. #include <QSqlDatabase>
    5. #include <QMessageBox>
    6. #include <QSqlError>
    7. #include <QSqlQuery>
    8. Widget::Widget(QWidget *parent) :
    9. QWidget(parent),
    10. ui(new Ui::Widget)
    11. {
    12. ui->setupUi(this);
    13. // 打印Qt支持的数据库驱动
    14. qDebug() << QSqlDatabase::drivers();
    15. // 添加sqlite数据库
    16. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    17. // 设置数据库
    18. db.setDatabaseName("./info.db");
    19. // 打开数据库
    20. if (!db.open())
    21. {
    22. QMessageBox::warning(this, "错误", db.lastError().text());
    23. return;
    24. }else {
    25. QSqlQuery query(db);
    26. query.exec("create table student(id int primary key, name varchar(255), age int, score int);");
    27. // 批量插入
    28. // odbc风格
    29. // 预处理语句 ?号相当于占位符
    30. query.prepare("insert into student(name, age, score) values(?, ?, ?);");
    31. // 给字段设置内容 list
    32. QVariantList nameList;
    33. nameList << "小明" << "小龙" << "小江";
    34. QVariantList ageList;
    35. ageList << 11 << 22 << 33;
    36. QVariantList scoreList;
    37. scoreList << 55 << 85 << 75;
    38. // 给字段绑定相应的值 按顺序绑定
    39. query.addBindValue(nameList);
    40. query.addBindValue(ageList);
    41. query.addBindValue(scoreList);
    42. // 执行预处理命令
    43. query.execBatch();
    44. // 查数据
    45. query.exec("select * from student");
    46. while (query.next()) // 一行一行遍历
    47. {
    48. // 取出当前行的内容
    49. qDebug() << query.value(0).toInt()
    50. << query.value(1).toString()
    51. << query.value("age").toInt()
    52. << query.value("score").toInt();
    53. }
    54. }
    55. }
    56. Widget::~Widget()
    57. {
    58. delete ui;
    59. }

    文件
    SqlLite.zip