QSqlDatabase(1)基本接口,以及(增删改除)的简单实例

目录

前言

一、QSqlDatabase 简介

二、QSqlDatabase的一些常用方法

三、认识QSqlQuery

四、使用QSqlDatabase的一些基本步骤

五、QSqlDatabase实现 增加,删除,查询,修改数据的实例


前言

本章主要讲解QSqlDatabase基本知识的,以及增删改查的用法;

要是都熟悉了,可以跳过直接浏览下一篇文章(主要是实战,写了一个数据动态库)

QSqlDatabase(2)实例,QTableView显示数据库表数据_Ivy_belief的博客-CSDN博客

一、QSqlDatabase 简介

1、QSqlDatabase是Qt提供的用于管理数据库连接的类,可以连接多种类型的数据库(如MySQL、Oracle、SQLite等),并提供了许多操作数据库的方法。

2、QSqlDatabase可以连接多种类型的数据库,包括:

(1)MySQL
(2)PostgreSQL
(3)SQLite
(4)Oracle
(5)Microsoft SQL Server
(6)IBM DB2
(7)Sybase ASE
(8)ODBC(Open Database Connectivity,开放式数据库连接)等。

3、通过QSqlDatabase,我们可以方便地连接、操作数据库,实现数据的存储和查询。

二、QSqlDatabase的一些常用方法

//常用API:

1. addDatabase(const QString &driverName, const QString &connectionName = QLatin1String(defaultConnection)):添加一个数据库连接,driverName为驱动名称,connectionName为连接名称,默认为defaultConnection。

2. setDatabaseName(const QString &name):设置数据库名称。

3. setUserName(const QString &userName):设置用户名。

4. setPassword(const QString &password):设置密码。

5. setHostName(const QString &hostName):设置主机名。

6. setPort(int port):设置端口号。

7. open():打开数据库连接。

8. close():关闭数据库连接。

9. isOpen():判断数据库是否已经打开。

10. lastError():获取最后一次出错的信息。

11. tables(QSql::TableType type = QSql::Tables):获取数据库中的表名。

12. exec(const QString &query):执行SQL语句。

13. prepare(const QString &query):准备SQL语句。

14. bindValue(const QString &placeholder, const QVariant &val):绑定值。

15. exec():执行准备好的SQL语句。

16. next():获取下一条记录。

17. value(int index):获取指定列的值。

18. value(const QString &name):获取指定列的值。

19. record():获取当前记录。

20. rowCount():获取记录总数。

21. lastInsertId():获取最后插入数据的ID。

22. transaction():开启事务。

23. commit():提交事务。

24. rollback():回滚事务。

三、认识QSqlQuery

1、QSqlQuery 简介:

(1)QSqlQuery封装了在QSqlDatabase上执行的SQL查询中所涉及的创建、导航和检索数据的功能。

(2)QSqlQuery是Qt中的一个类,用于执行SQL语句并处理结果。

(3)它可以执行各种类型的SQL语句,如SELECT、INSERT、UPDATE和DELETE,并且可以返回结果集或受影响的行数。

(4)QSqlQuery还提供了许多方法来访问和处理结果集中的数据,例如next()、value()和record()等。

(5)它是Qt中与数据库交互的重要组件之一。

2、QSqlQuery 常用api

1. exec():执行SQL语句;
2. prepare():准备SQL语句,但不执行;
3. bindValue():将值绑定到SQL语句中的占位符;
4. next():将查询结果集的指针移到下一行;
5. value():获取当前行指定列的值;
6. record():获取查询结果集的元数据,包括列名、类型等;
7. isActive():判断查询是否处于活动状态;
8. lastError():获取最后一次执行查询时发生的错误信息;
9. clear():清除查询结果集和错误信息。

3、用QSqlQuery的一些基本步骤:

// 1. 创建一个QSqlQuery对象
QSqlQuery query;

// 2. 准备SQL语句
QString sql = "SELECT * FROM my_table WHERE id = :id";

// 3. 绑定参数(可选)
query.bindValue(":id", 1);

// 4. 执行查询
query.exec(sql);

// 5. 处理结果
while (query.next())
{
    int id = query.value(0).toInt();
    QString name = query.value(1).toString();
    // 处理数据
}

// 6. 关闭查询
query.finish();

除了SELECT查询,QSqlQuery还可以执行INSERT、UPDATE、DELETE等操作。具体用法可以参考Qt文档或相关教程。

四、使用QSqlDatabase的一些基本步骤

// 1. 引入头文件:
#include <QSqlDatabase>

// 2. 创建一个QSqlDatabase对象:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");//这里我们使用SQLite作为数据库,如果使用其他类型的数据库,需要相应地更改参数。

// 3. 设置数据库连接参数:
db.setDatabaseName("myDatabase.db");//这里设置了数据库文件名为myDatabase.db。

// 4. 打开数据库连接:
if (!db.open()) 
{
    qDebug() << "Failed to open database";// 如果连接失败,可以通过调用db.lastError()获取错误信息。
}

// 5. 执行SQL语句:
QSqlQuery query;
query.exec("SELECT * FROM myTable");// 这里我们执行了一个简单的SELECT语句,并遍历了查询结果。
while (query.next()) 
{
    // 处理查询结果
}

// 6. 关闭数据库连接:
db.close();

以上是使用QSqlDatabase的基本步骤,实际使用中可能会涉及到更多的操作和细节。需要注意的是,QSqlDatabase是一个全局对象,可以在程序的任何地方使用,但需要确保只有一个线程访问它。

五、QSqlDatabase实现 增加,删除,查询,修改数据的实例

下面是一个使用QSqlDatabase进行增加、删除、查询和修改数据的示例:


#include <QCoreApplication>
#include <QtSql>
#include <QDebug>

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

    // 建立数据库连接
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("mydatabase.db"); // 数据库文件名

    if (!db.open()) 
    {
        qDebug() << "Failed to connect to database.";
        return -1;
    }

    // 创建表
    QSqlQuery query;
    QString createTableQuery = "CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)";
    if (!query.exec(createTableQuery)) 
    {
        qDebug() << "Failed to create table.";
        return -1;
    }

    // 插入数据
    QString insertQuery = "INSERT INTO mytable (name, age) VALUES (:name, :age)";
    query.prepare(insertQuery);
    query.bindValue(":name", "John");
    query.bindValue(":age", 25);
    if (!query.exec()) 
    {
        qDebug() << "Failed to insert data.";
        return -1;
    }

    // 查询数据
    QString selectQuery = "SELECT * FROM mytable";
    if (!query.exec(selectQuery))
    {
        qDebug() << "Failed to select data.";
        return -1;
    }

    while (query.next()) 
    {
        int id = query.value("id").toInt();
        QString name = query.value("name").toString();
        int age = query.value("age").toInt();
        qDebug() << "ID:" << id << " Name:" << name << " Age:" << age;
    }

    // 修改数据
    QString updateQuery = "UPDATE mytable SET age = :age WHERE name = :name";
    query.prepare(updateQuery);
    query.bindValue(":age", 30);
    query.bindValue(":name", "John");
    if (!query.exec()) 
    {
        qDebug() << "Failed to update data.";
        return -1;
    }

    // 删除数据
    QString deleteQuery = "DELETE FROM mytable WHERE name = :name";
    query.prepare(deleteQuery);
    query.bindValue(":name", "John");
    if (!query.exec()) 
    {
        qDebug() << "Failed to delete data.";
        return -1;
    }

    db.close();

    return a.exec();
}

上述示例中,我们首先建立了一个SQLite数据库连接,并创建了一个名为mytable的表。然后,我们插入一条数据,查询并输出所有数据,接着修改数据和删除数据。

请注意,上述示例中的数据库文件名、表名以及列名需要根据你的实际情况进行修改。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值