首页 > 数据库 >Qt之QSqlDatabase的用法

Qt之QSqlDatabase的用法

时间:2023-11-28 20:12:57浏览次数:49  
标签:const Qt 数据库 用法 QString include QSqlDatabase 连接

一、常用函数的介绍

QSqlDatabase 类是Qt中用于管理数据库连接的类。它提供了创建、配置、打开和关闭数据库连接的方法。

1.addDatabase 函数

static QSqlDatabase addDatabase(const QString& type, const QString& connectionName = QLatin1String(defaultConnection));
  • 该函数用于添加一个数据库连接。
  • type 参数指定数据库驱动类型,例如 "QMYSQL"、"QSQLITE" 等。
  • connectionName 参数指定连接的名称,默认为 defaultConnection。
  • 返回一个 QSqlDatabase 对象,用于后续的数据库配置。

2.setDatabaseName函数

void setDatabaseName(const QString& name);

用于设置数据库连接的名称,通常是数据库文件名或者连接字符串。

3.setHostName、setUserName、setPassword 函数 

void QSqlDatabase::setHostName(const QString &host);
void QSqlDatabase::setUserName(const QString &name);
void QSqlDatabase::setPassword(const QString &password);

用于设置数据库服务器的主机名、用户名和密码。

4.open、isOpen 函数

bool QSqlDatabase::open(const QString &user, const QString &password);
bool QSqlDatabase::isOpen() const;
  • open 用于打开数据库连接,参数为用户名和密码。
  • isOpen 用于检查数据库连接是否已经打开。

5.close函数 

void QSqlDatabase::close();

用于关闭数据库连接。

6.lastError函数

QSqlError QSqlDatabase::lastError() const;

用于获取数据库连接的最后一次错误。

二、示例

1.数据表的创建和数据的插入示例

#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>

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

    // 添加 SQLite 数据库连接
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

    // 设置数据库连接属性
    db.setDatabaseName("user.db");  // 设置数据库文件名

    // 打开数据库连接
    if (db.open()) {
        qDebug() << "Database connected successfully";

        // 创建数据表
        QSqlQuery createTableQuery;
        if (createTableQuery.exec("CREATE TABLE IF NOT EXISTS users_info (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)")) {
            qDebug() << "Table created successfully";

            // 插入数据
            QSqlQuery insertDataQuery;
            if (insertDataQuery.exec("INSERT INTO users_info (name, age) VALUES ('John', 30), ('Alice', 25), ('Bob', 35)")) {
                qDebug() << "Data inserted successfully";
            } else {
                qDebug() << "Data insertion error:" << insertDataQuery.lastError().text();

            }
        } else {
            qDebug() << "Table creation error:" << createTableQuery.lastError().text();
        }

        // 关闭数据库连接
        db.close();
    } else {
        qDebug() << "Database connection error:" << db.lastError().text();
    }

    return a.exec();
}

输出结果:

 

  

  

标签:const,Qt,数据库,用法,QString,include,QSqlDatabase,连接
From: https://www.cnblogs.com/TechNomad/p/17862886.html

相关文章

  • 1. Shell 基本用法
    重点:条件测试。read。Shell环境配置。case。for。find。xargs。gzip,bzip2,xz。tar。sed。1)编程基础Linus说:Talkischeap,showmethecode。1.1)程序组成程序:算法+数据结构数据:是程序的核心数据结构:数据在计算机中的类型和组织方式算法:处理数据的方式......
  • Qt 给QCheckBox增加样式
    一、概述做一个好看的QCheckBox二、示例1.样式QCheckBox{spacing:5px;}QCheckBox::indicator{width:24px;height:24px;}QCheckBox::indicator:unchecked{image:url(:images/icon_checked.png);}QCheckBox::indicator:unchecked:......
  • MQTT vs. HTTP: which one is the best for IoT?
    MQTTvs.HTTP:whichoneisthebestforIoT? BeginnersGuideToTheMQTTProtocolhttp://www.steves-internet-guide.com/mqtt/翻译搜索复制......
  • Qt给QRadioButton设置自定义样式
    一、概述做一个好看的QRadioButton。可以选中,取消选中。二、代码示例1.样式QRadioButton::indicator::unchecked{border-image:url(images/user_protocol_uncheck.webp);}QRadioButton::indicator::checked{border-image:url(images/user_protocol_......
  • AIDL中的in,out,inout用法篇
    Android两个进程间的内存相互独立不能互相访问,跨进程传输非默认类型对象需要先序列化,序列化的目的是将对象数据以能够在内存中流通的形式从一个进程传递到另一个进程,两个进程对象的传递类似深度clone,client端就对象数据写入Parcel(writeToParcel)server端从Parcel(readFromParcel)......
  • Qt 6.6.1 修复了 400 多个 bug
    Qt6.6 于上个月正式发布,引入了QtGraphs、更强大的Wayland支持、各种渲染增强功能等等。Qt是一个跨平台的应用程序开发框架,广泛用于创建图形用户界面、嵌入式系统和移动应用等。Qt6是Qt的最新版本,于2022年12月发布,带来了许多新特性和改进,如更强大的QML语言、更......
  • v-show和v-if的用法和区别
    一、用法v-if是Vue.js中常用的条件渲染指令,根据表达式的值来动态控制元素的显示或隐藏。具体的使用方法如下:1.基本语法<divv-if="condition"><!--content--></div><divv-if="condition"><!--content--></div>其中,v-if后面跟着一个表达式condition,如果该表达式......
  • C# action,delegate,func的用法和区别
      举个委托的例子:  小明去书店买一本书。  1、买书:privatedelegatevoidBuyBook();  2、附近书店(委托的方法):publicstaticvoidBook(){MessageBox.Show("提供书籍");}  3、小明和书店建立关系(给委托绑定方法)BuyBookbuybook=newBuyBook(Book);......
  • Qt自定义QLineEdit
    一、概述自定义QLineEdit,让QLineEdit变的好看一点。实现效果:1.普通输入(可以输入汉字、字符、数字)2.只能输入数字3.密码模式输入框二、代码示例1.创建EditText.h和EditText.cpp[默认样式]#include"EditText.h"EditText::EditTex......
  • QToolBar右侧添加QAction
    使用QToolBar的addWidget,添加一个可伸缩的空QWidget//Action放右侧:使用QToolBar的addWidget,添加一个可伸缩的空QWidget。QWidget*spacer=newQWidget;spacer->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);ui->toolBar->addWidget(spacer);//之后的QActi......