Qt Oracle往数据库里插入或者更新图片

前言

最近遇到需要将图片从本地上传,上传后先显示到QLabel上,确认提交时,写入到Oracle中

读取本地图片文件

首先,需要将本地的文件读出来。

QPixmap pixmap(":/images/images/1.png");

QPixmap 转 QByteArray

我的设计方案是,我有一个label用来显示图片,所以我就需要从这个label的pixmap来转成QByteArray;

QByteArray byte;
QBuffer buffer(&byte); ui->label->pixmap()->save(&buffer, "png", 0);

这样,label里的图片内容就保存到byte里了

组成SQL,并执行

我们在使用Qt进行数据库操作时,我们首先需要进行一个SQL语句的组合;
比如:

QString command = QString("UPDATE TABLE SET PICTURE = '%1'")
.arg(QString(byte));
QSqlQuery query;
if (!query.exec(command)) {
qDebug() << QString("exec error, command is :%1, error reason is :%2")
.arg(command)
.arg(query.lastError().text());
}

但是这里就有一个问题,在你将QByteArray转成QString的时候,由于遇到’0’的话,会截断,所以转出来的图片数据是不全的,所以这里需要用到QSqlQuery里的bindValue()这个函数。

QString command = "UPDATE TABLE SET PICTURE =:pic";

QVarient var(byte);
QSqlQuery query;
query.prepare(command);
query.bindValue(":pic", var); if (!query.exec()) {
qDebug() << QString("exec error, command is :%1, error reason is :%2")
.arg(command)
.arg(query.lastError().text());
}

这样就可以去执行更新语句了。

Qt Oracle往数据库里插入或者更新图片的更多相关文章

  1. Android Sqlite数据库执行插入查询更新删除的操作对比

    下面是在Android4.0上,利用Sqlite数据库的insert,query,update,delete函数以及execSql,rawQuery函数执行插入,查询,更新,删除操作花费时间的对比结果 ...

  2. oracle 向数据库同时插入多条数据

    oracle 与 mysql 不同. mysql 可以直接插入多条数据的操作:  采用 INSERT INTO 某表 VALUES(各个值),VALUES(各个值),.....; 或者 INSERT ...

  3. MYSQL数据库学习----插入、更新、删除

    一:插入数据 1 为表的所有字段插入数据 INSERT INTO 表名 (值1,值2, 值3...); 2 为表的指定字段插入数据 INSERT INTO 表名(字段1,字段2,...) VALUES ...

  4. C#向数据库中插入或更新null空值

    一.在SQL语句中直接插入null或空字符串“” int? item = null; item == null ? "null" : item.ToString(); item = ...

  5. JDBC往数据库里插入数据

    首先还是一个工具类 插入数据

  6. wpf linq数据库无法插入

    最近做wpf应用程序,遇到一个很奇怪的问题,我用代码往数据库里插入数据成功了,但去vs的服务器资源管理器里查看数据库总是最开始的样子,什么都没有插入进去,然后就检查代码,打日志查看sql语句,发现都没 ...

  7. 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表

    最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...

  8. 探索Oracle之数据库升级七 11gR2 to 12c 升级完毕后插入PDB

    探索Oracle之数据库升级七 11gR2 to 12c 升级完毕后插入PDB 前言:        从Oracle 12c開始,引入了容器数据库的概念,能够实现数据库插拔操作,例如以下图: 如今我们 ...

  9. Oracle数据库中插入日期型数据(to_date的用法)(转载)

    往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ( '2007-12-20 18:31:34' , 'YYY ...

  10. 003杰信-在jsp页面输入数据,然后在oracle数据库中插入factory数据,当字段允许为空时要特殊处理

    本博客的内容全部来自于传智播客,特在此说明. 业务要求如下:在jsp页面(jFactoryCreate.jsp)上输入数据时,转到后台,并输入到数据库. jFactoryCreate.jsp页面:

随机推荐

  1. Nlog基本使用

    引入get包:NLog.Extensions.Logging 添加一个nlog.cofig文件 并设置属性,始终复制或较新则复制 <?xml version="1.0" en ...

  2. 清除 TortoiseSVN已存储的连接URL地址

    Eclipse 清除 SVN 的 URL 历史记录1.关闭 Eclipse2.进入 工程目录 \.metadata\.plugins\org.tigris.subversion.subclipse.c ...

  3. 《Spring Boot+Vue全栈开发实战-王松2018》一书pdf+源码下载

    下载地址为: 链接:https://pan.baidu.com/s/18lnF2KemQTqkKaCRmMbvXA 提取码:1pie 版权声明:本书版权属于出版社和作者.仅学习使用,请于下载后24小时 ...

  4. Python3网络爬虫开发实战阅读笔记

    基本库的使用 网络请求库 urllib(HTTP/1.1) Python自带请求库,繁琐 基础使用:略 requests(HTTP/1.1) Python常用第三方请求库,便捷 基础使用:略 http ...

  5. Kubernetes-介绍

    1. kubernetes 是什么? Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化. Kubernetes 这个名字源于希腊语,意为 ...

  6. 使用iText对PDF文件签章和验章

    PDF是国际板式文件标准,使用的范围很广.OFD为国产板式文件标准,设计起点很高,天然支持国产签名算法(SM2.SM3):具有后发优势,目前市场占有率仍然很低,前途光明而又漫长.PDF标准并不支持国产 ...

  7. G1原理—6.G1垃圾回收过程之Full GC

    大纲 1.FGC的一些前置处理 2.FGC的整体流程 3.传统FGC只能串行化 + G1的FGC可以并发化 4.并行化FGC之并行标记 + 任务窃取 5.并行化FGC之跨分区压缩 + 避免对象跨分区 ...

  8. 前端(一)-Html

    1.网页基本信息 <!DOCTYPE html> 浏览器使用的规范 <head> 网页头 <body> 主体部分 <meta> 元数据 meta的nam ...

  9. window service 2012 R2 0x8007000d

    今天遇到了一个很无语的问题,我的一个.net core 项目,部署到IIS上之后,启动网站,报500.19的错误.尝试了网上N种办法始终没办法解决,最后重装了我的.net core,解决了. 第一步: ...

  10. switch-case内不能定义变量?

    1. 报错 switch(something) { case a: int a = 0; break; default: break; } 结果报错: error: cannot jump from ...