Qt在MySQL中存储音频文件

news2024/11/25 3:06:26

一、在存储音频视频等大文件时需要以二进制文件进行存储,首先需要了解mysql存储二进制文件的字段类型以及大小:

需要创建数据库中的图片类型为:二进制mediumblob类型,(

TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G

在估算最大实际使用上限的情况下,能用小的就用小的,效率高。

二、mysql数据库默认是不支持大文件存储的因此需要修改对应的mysql配置:

这一步操作详情可以看这里:mysql的max_allowed_packet配置_mysql设置max_allowed_packet_Hannah的博客-CSDN博客

在my.ini文件中添加如下语句。比如:改为1G.如下图所示。修改完成后,需要重启mysql。

max_allowed_packet = 1024M

三、上传音频文件代码

QFile file(tempMp3Path);
if(file.open(QIODevice::ReadOnly))
{
    QByteArray data = file.readAll();
    AddAudio("filename",data);
}


bool AddAudio( QString name, QByteArray arr)
{
    bool l_ok;
    QSqlQuery l_query;

    l_query.prepare("INSERT INTO audiomsg (name,content)VALUES(:name,:content)");
    QVariant blobData(arr);
    l_query.bindValue(":name",name);

    l_query.bindValue(":content",blobData);
    QSqlDatabase::database().transaction();

    l_ok = l_query.exec();
    if(!l_ok)
    {
        qDebug()<<"error inset sql!"<<l_query.lastError().text();
    }
    else
    {
        QSqlDatabase::database().commit();
    }
    return  l_ok;
}

四、下载音频代码

void load_File(QString filename)
{
    if (filename == "")
        return;

    QSqlTableModel * model= database->GetModel("audiomsg");
    model->setFilter(QString("name = '%1'").arg(filename));
    model->select();

    QByteArray arr =  model->record(0).value("content").toByteArray();
    QFile qfile_save_adc_bin(filename);
    qfile_save_adc_bin.open(QIODevice::WriteOnly);
    QDataStream out_adc(&qfile_save_adc_bin);
    //# 写入
    out_adc.writeRawData(arr,arr.size());
     qfile_save_adc_bin.close(); // 关闭文件
}
  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/622147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果发布会,卧槽,卧槽,卧槽

今天跟二哥在群里聊到苹果的发布会&#xff0c;二哥完整的看了发布会&#xff0c;我随口问一句二哥看完后什么感受。 二哥说「苹果的工业设计还是遥遥领先&#xff0c;交互设计也是一流水准&#xff0c;然后价格也是遥遥领先」。 然后&#xff0c;我今天也抽空看了关于苹果新发…

【算法与数据结构】203、LeetCode移除链表元素

文章目录 题目一、解题思路完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 题目 一、解题思路 思路分析&#xff1a;这道题需要注意一个特殊情况&#xff0c;当删除的是头结点时&#xff0c;直接删除就找不到整个链表。因此我…

2023LRC软件、Adobe Lightroom Classic下载、安装教程

最后附下载地址 LRC简介&#xff1a; Adobe Lightroom Classic&#xff08;简称LR&#xff09;是Adobe Creative Cloud大家庭中的一款专业的图片管理和编辑工具&#xff0c;用于专业摄影师、摄影爱好者以及所有不断优化数码影像的人等。其目标是以丰富的功能提供高效、一致的…

03【WebStorm开发工具】

上一篇&#xff1a;02【HTML快速入门】 下一篇&#xff1a;04【】 目录&#xff1a;【HTML5系列教程】 文章目录 三、WebStorm开发工具3.1 WebStorm简介3.2 WebStorm安装3.3 WebStorm基本使用3.3.1 创建项目3.3.2 调整字体大小3.3.3 代码自动补全3.3.4 WebStorm常用快捷键 三…

在Anaconda的虚拟环境中添加环境变量并通过python访问(win/mac/linux)

一、前言 有的时候密码登比较敏感的信息&#xff0c;不方便直接写在代码里有很多变量我想很多project都可以访问到 那这时候使用环境变量是非常合适的了。 二、设置环境变量 以linux为例 直接在internal执行命令 export 变量值通过更改bashc文件 vim ~/.bashrc # 在最后一行加上…

【双向链表】

双向链表 带头双向循环链表的实现1. 函数的声明2. 函数的实现3. 主函数测试 带头双向循环链表的实现 今天我们来实现一下带头双向循环链表&#xff0c;顾名思义&#xff0c;带头就是有哨兵位&#xff0c;哨兵位不是链表的头&#xff0c;它是连接头节点的一个节点&#xff0c;方…

ChatGPT提示词攻略之迭代提示词

当我们在调试程序时&#xff0c;通常很难一次就把程序正常跑起来。这是普遍现象。但我们会借助一些工具和手段&#xff0c;有步骤有流程地去调整程序&#xff0c;最终让程序按照我们想要的样子正常执行。 对于提示词来说也是一样的。当我们向ChatGPT提问时&#xff0c;一开始它…

从操作系统角度了解内存管理

一.内存管理 1.主要功能 内存管理的主要功能有: 内存空间的分配与回收。由操作系统完成主存储器空间的分配和管理&#xff0c;使程序员摆脱存储分配的麻烦&#xff0c;提高编程效率。地址转换。在多道程序环境下&#xff0c;程序中的逻辑地址与内存中的物理地址不可能一致, …

Effective第三版 中英 | 第二章 创建和销毁对象 | 固定资源首选使用依赖注入

文章目录 Effective第三版前言第二章 创建和销毁对象固定资源首选使用依赖注入 Effective第三版 前言 大家好&#xff0c;这里是 Rocky 编程日记 &#xff0c;喜欢后端架构及中间件源码&#xff0c;目前正在阅读 effective-java 书籍。同时也把自己学习该书时的笔记&#xff0…

接招吧!MySQL 10 连问

文章目录 &#x1f349;1. 索引底层采用什么数据结构&#xff1f;为什么不用hash&#x1f349;2. B树与B树区别&#xff1f;为何用B树&#xff1f;&#x1f349;3. 自增主键理解&#xff1f;&#x1f349;4. 为什么自增主键不连续&#x1f349;5. Innodb为什么推荐用自增ID&…

Jetpack Compose 中的基础组件

Button 默认样式 Button的lambda块中可以传入任意的Composable组件&#xff0c;但一般是放一个Text在里面 Button(onClick { println("确认onClick") }) {Text("默认样式") }按钮的宽高 如果想要宽一点或高一点的Button&#xff0c;可以通过Modifier修…

chatgpt赋能python:Python平面图制作教程

Python平面图制作教程 Python是一种高级编程语言&#xff0c;也是数据科学和机器学习领域中使用最广泛的编程语言之一。在数据可视化中&#xff0c;Python语言具有优秀的表现力和灵活性&#xff0c;可以为用户展示各种数据可视化方案。这篇文章将重点介绍Python如何制作平面图…

八字诀 · 十年之约

* * * 原创&#xff1a;刘教链 * * * 号外&#xff1a;今天在“刘教链Pro”发表了两篇文章&#xff0c;《一视同仁&#xff0c;SEC起诉Coinbase》和《SEC起诉币安的官方新闻稿》&#xff0c;欢迎关注“刘教链Pro”并阅读。 * * * 隔夜比特币奋力反弹&#xff0c;重新回升至27k…

激发数学思维:GPT-4实证研究探索挑战性数学问题

深度学习自然语言处理 原创作者&#xff1a;wkk 考虑到自然语言在许多科学和工程领域表达的数学问题的丰富性&#xff0c;使用大语言模型(LLM)来解决数学问题是一项有趣的研究工作。今天给大家介绍一篇微软研究院联合欧美高校关于如何使用GPT-4解决数学问题的研究论文。 之前的…

KCC@深圳 邀你共享『升压手电DIY』的创新之旅!

嘿&#xff0c;亲爱的KCC深圳的社区成员们&#xff01;你们是否曾经梦想过拥有一款强大的手电&#xff0c;能够在黑暗中照亮一切&#xff1f;现在&#xff0c;我将揭开一个让你们眼前一亮的活动——『升压手电DIY』&#xff01; 在这个充满创意的活动中&#xff0c;我们将带你们…

为什么我们是RISC-V的首选 GPU

谈起 GPU&#xff0c;很容易想到 Imagination。毫无疑问&#xff0c;鉴于 Imagination 在图形处理领域的积累&#xff0c;也成为 RISC-V 的首选 GPU。 凭借 30 多年的 PowerVR GPU&#xff0c;Imagination 非常熟悉图形处理器。在过去的时间里&#xff0c;我们不断创新&#xf…

总结893

学习目标&#xff1a; 月目标&#xff1a;6月&#xff08;线性代数强化9讲&#xff0c;背诵15篇短文&#xff0c;考研核心词过三遍&#xff09; 周目标&#xff1a;线性代数强化3讲&#xff0c;英语背3篇文章并回诵&#xff0c;检测 每日必复习&#xff08;5分钟&#xff09;…

java数组and二维数组

文章目录 java一维数组1.数组定义和定义格式1.1 定义1.2格式 2.数组初始化2.1数组动态初始化2.1.1格式 2.2动态数组初始化取值2.2.1格式 2.3 静态数组初始化取值2.3.1格式 3.数组求长度4.数组遍历 java二维数组1.二维数组动态初始化2.二维数组遍历3.二维数组长度 数组赋值1整数…

聊一聊Netflix 技术栈-数据库

大家好&#xff01;今天我们来聊一聊全球最受欢迎的视频流媒体平台Netflix的技术栈。作为一个庞大的流媒体服务提供商&#xff0c;Netflix需要强大的数据库支持来实现规模化的视频播放。让我们一起来看看Netflix选择了哪些数据库来支撑他们的业务。 在Netflix的技术栈中&#x…

define与const什么使用区别

&#x1f6a9;define &#x1f38c;一.define的使用方法 &#x1f380;1.定义常量 #define M 10010 int main() {cout << M << endl;cout << M M << endl;//cout << M << end;//会报错return 0; }我们定义了一个名为M的常数&#xff0…