Qt学习之路---Sql学习

QtSql 模块提供了许多方法(函数)来帮助您在Qt应用程序中与数据库进行交互。以下是一些常用的QtSql模块中的方法列表,涵盖了连接、查询、插入、更新、删除和事务等方面的操作。请注意,这里只列出了一些常用的方法,实际上QtSql模块提供了更多的功能和方法。

数据库连接和设置:

  • QSqlDatabase::addDatabase():添加数据库连接。
  • QSqlDatabase::setDatabaseName():设置数据库名称。
  • QSqlDatabase::setUserName()QSqlDatabase::setPassword():设置连接的用户名和密码。
  • QSqlDatabase::open():打开数据库连接。
  • QSqlDatabase::close():关闭数据库连接。

执行查询:

  • QSqlQuery::exec():执行SQL查询语句。
  • QSqlQuery::prepare():准备SQL查询,但不执行。
  • QSqlQuery::bindValue():绑定参数值。
  • QSqlQuery::next()QSqlQuery::previous()QSqlQuery::first()QSqlQuery::last():导航查询结果集。

检索数据:

  • QSqlQuery::value():获取查询结果的字段值。
  • QSqlQuery::record():获取查询结果的字段信息。

数据插入、更新和删除:

  • QSqlQuery::insert():插入数据。
  • QSqlQuery::update():更新数据。
  • QSqlQuery::remove():删除数据。

事务管理:

  • QSqlDatabase::transaction():开始事务。
  • QSqlDatabase::commit():提交事务。
  • QSqlDatabase::rollback():回滚事务。

错误处理:

  • QSqlQuery::lastError():获取最后一个错误。
  • QSqlError::text():获取错误消息。

查询元数据和表格信息:

  • QSqlDatabase::tables():获取数据库中的表格列表。
  • QSqlDatabase::record(tableName):获取表格的字段信息。
#include <QtSql>
#include <QCoreApplication>
#include <QDebug>
#include <QString>

int main(int argc, char *argv[]) {
    QCoreApplication app(argc, argv);

    //创建sqlLite数据库并命名
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("C:\\Users\\LDT\\Documents\\QCode\\sql_learn\\student.db");

    //如果要连接mysql
    //    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    //    db.setHostName("localhost"); //主机名或者IP地址
    //    db.setDatabaseName("xxx");      //需要连接的数据库
    //    db.setUserName("xxx");      //账号
    //    db.setPassword("xxxxxxx");  //密码

    //打开数据库 open,返回值为bool
    if (!db.open())
    {
        qDebug() << "open db is fail!";
        return -1;
    }

    //创建表格
    QSqlQuery sq;
    if (!sq.exec("CREATE TABLE student (id INTEGER PRIMARY KEY, name TEXT, age INTEGER, sex TEXT)"))
    {
        qDebug() << "Creat table is fail!";
        db.close();
        return -1;
    }
    int age = 20;
    //插入3组数据数据
    for (int i =0 ; i < 3; i++) {
        if (!sq.prepare("INSERT INTO student (name, age, sex) VALUES (:name, :age, :sex)"))
        {
            qDebug() << "Inster data is fail!";
            db.close();
            return -1;
        }
        age +=2;
        sq.bindValue(":name", "张三");
        sq.bindValue(":age",age);
        sq.bindValue(":sex","男");

        if (sq.exec())
        {
            qDebug() << "Inster is successful(exec)!";
        }
        else {
            qDebug() << "Inster is fail(exec)!";
        }
    }
    // 查询数据
    if (!sq.exec("SELECT * FROM student")) {
        qDebug() << "无法查询数据!";
        return 1;
    }

    while (sq.next()) {
        QString name = sq.value(1).toString();
        int age = sq.value(2).toInt();
        QString sex = sq.value(3).toString();
        qDebug() << "name : " << name <<"   " << "age : " << age << "   " << "sex : " << sex;
    }

    //更新数据
    if (!sq.exec("UPDATE student SET name='李四',sex='女' WHERE age=22"))
    {
        qDebug() << "Update is fail!" << sq.lastError().text();
        db.close();
        return -1;
    }

    //删除数据
    if (!sq.exec("DELETE FROM student WHERE age = 24"))
    {
        qDebug() << "delete is fail!";
        db.close();
        return -1;
    }

    // 重新查询数据
    if (!sq.exec("SELECT * FROM student")) {
        qDebug() << "无法查询数据!";
        return 1;
    }
    while (sq.next()) {
        QString name = sq.value(1).toString();
        int age = sq.value(2).toInt();
        QString sex = sq.value(3).toString();
        qDebug() << "name : " << name <<"   " << "age : " << age << "   " << "sex : " << sex;
    }

    db.close();

    return 0;
}

 运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值