DevExpress:报表中XRPictureBox控件绑定数据库(SQlite)中的图片数据

news2024/9/21 20:49:01

一.需求描述

1.使用XRPictureBox控件显示图片;
2.因为报表需求,显示的图片在指定条件下需要改变,比如:指定生成小明的报表时,加载小明的头像;指定生成小红的报表时,加载小红的头像;
3. 同时导出上述中“小明的报告”和“小红的报告”(同一报告,绑定数据库后,如果数据库中有多条信息,比如有小明和小红的信息,那么会自动生成两页报告,第一页是小明的,第二页是小红的);(绑定数据库这点可以参考这个视频,数据库不一样但原理是一样的:使用DevExpress的XtraReports控件创建员工薪资报告应用程序)

二、数据库表格字段以及内容展示

在这里插入图片描述
【image】字段用于存储图片数据,字段类型自己手动输入得longtext类型(sqlite studio 软件字段里只有text),sqlite存储图片的详细方式以及图片类型在下面解释。
在这里插入图片描述

三、DevExpress XRPictureBox控件绑定数据库中图片格式的要求

DevExpress官网XRPictureBox说明文档:XRPictureBox;
在这里插入图片描述
如官方文档说明:XRPictureBox控制支持绑定 编码为based64 格式的图片数据;了解完sqlite存储图片的要求后发现sqlite数据库是支持存储based64编码格式的图像数据的,正好符合要求,可以使用了。

番外剧:sqlite支出存储blob字段类型二进制图像数据以及text字段类型based64编码的图像(字符串);
参考01(不是实例):sqlite存储图片;
参考02(不是实例):图片以base64格式存储进数据库 字段使用类型;
参考03(sqlite存储提取blob字段类型二进制图,实例):C# 实现SQLite数据库将图片读写;

四、图片转成based64编码格式数据,存入sqlite数据库

//based64编码格式的图像数据存入数据库
  public void Updata_SQL(int FileName, Image Picture)
        {
            byte[] picData = ImageToByte(Picture);  //转成二级制,对应数据库字段类型为blob;
            string picData02 = Convert.ToBase64String(picData); //继续转成baseed64,对应数据库字段类型为text类;
            SQLiteConnection conn = new SQLiteConnection("Data Source=../../../dataresource/zhucong.db;");
            string sql = "";
            conn.Open();
            SQLiteCommand cmd = new SQLiteCommand(sql, conn);
            // 直接返这个值放到数据就行了           
            sql = string.Format(@"Update student set image = @Data where student_id = '{0}'", FileName);
            cmd.CommandText = sql;
            //一般我们在进行数据库操作的时候,不推荐使用 字符串相加来构造sql语句,防止SQL注入。@Data 作为参数,再在后面,把具体的数值,传入这个参数中。
            cmd.Parameters.Add("@Data", DbType.String, picData02.Length);
            //特别注意!!! 一定要是DbType.String类型,不然devexpress XRPictureBox 会识别不出数据库中based64编码格式的图片,会无法显示,亲测。
            cmd.Parameters["@Data"].Value = picData02;
            //cmd.Parameters.AddWithValue("@Data", picData02);
            cmd.ExecuteNonQuery();
        }


        //将图片数据转换为二进制流数据
        public byte[] ImageToByte(Image Picture)
        {
            MemoryStream ms = new MemoryStream();
            if (Picture == null)
                return new byte[ms.Length];
            Picture.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            byte[] BPicture = new byte[ms.Length];
            BPicture = ms.GetBuffer();
            return BPicture;
        }

五,给报告绑定sqlite类型的数据源,拖拉字段到对应控件上,即实现需求;

操作依然参考:使用DevExpress的XtraReports控件创建员工薪资报告应用程序)
或者英文好的直接参考官方文档:
01.报表绑定数据库;
02.将报表控件绑定到数据;
03.XRPictureBox;

以下是我绑定后的,数据绑定就不再赘述了。
在这里插入图片描述
预览效果(数据库中有多少条数据就能显示多少页报告):
在这里插入图片描述

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

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

相关文章

midjourney关键词总结

Midjourney是一个自主研发的实验室,用户可以通过Discord与Midjourney bot交互,并提交“Prompt”来快速获取所需的图像。 Midjourney具有易上手、难精通的特点,想要绘制出自己满意的图片,需要掌握各种命令和参数,并花费…

web 应用常用功能 -文件上传下载以及原理分析图和注意事项和细节

目录 web 应用常用功能 -文件上传下载 基本介绍 文件上传 文件上传应用实例 upload.jsp 实现步骤 文件上传注意事项和细节 文件下载 文件下载的原理分析图 文件下载应用实例 ● 需求:演示文件下载,如图 download.jsp FileDownloadServlet …

牛客网Verilog刷题——VL28

牛客网Verilog刷题——VL28 题目答案 题目 请编写一个序列检测模块,输入信号端口为data,表示数据有效的指示信号端口为data_valid。当data_valid信号为高时,表示此刻的输入信号data有效,参与序列检测;当data_valid为低…

【手把手做ROS2机器人系统开发五】使用C++实现编写简单的服务器和客户端

使用C实现编写简单的服务器和客户端 目录 使用C实现编写简单的服务器和客户端 一、程序编写 1、创建软件包 2、编译软件包 3、软件配置 4、服务器程序编写 5、客户端程序编写 6、软件包设置 7、设置编译选项 二、程序测试 1、编译程序 2、开启节点测试运行 3、执行…

verilog语言中的门级描述、行为描述及测试验证

描述D型主从触发器模块的门级结构建模: module flop(data, clock, clear, q, qb);input data, clock, clear; output q, qb;// 批量定义门电路 nand #10 nd1(a, data, clock, clear),nd2(b, ndata, clock),nd4(d, c, b, clear)&#xf…

算法刷题|1049.最后一个块石头的重量||、494.目标和、474.一和零

最后一个块石头的重量|| 题目&#xff1a;有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉…

HBase的表设计笔记

HBase的RowKey设计 HBase是三维有序存储的&#xff0c;通过rowkey&#xff08;行键&#xff09;&#xff0c;column key&#xff08;column family和qualifier&#xff09;和TimeStamp&#xff08;时间戳&#xff09;这个三个维度可以对HBase中的数据进行快速定位。 HBase中row…

中国能源网络安全大会举办,腾讯安全曹文炎分享助力能源企业安全建设的实践经验

2023年4月20日-21日&#xff0c;由中国能源研究会主办的“2023年中国能源网络安全大会”&#xff08;以下简称“大会”&#xff09;在南京召开。大会以“新形势新安全”为主题&#xff0c;围绕提升我国能源行业网络安全水平&#xff0c;增强和维护我国能源网络安全能力&#xf…

Pytorch的CNN,RNNLSTM

CNN 拿二维卷积举例&#xff0c;我们先来看参数 卷积的基本原理&#xff0c;默认你已经知道了&#xff0c;然后我们来解释pytorch的各个参数&#xff0c;以及其背后的计算过程。 首先我们先来看卷积过后图片的形状的计算&#xff1a; 参数&#xff1a; kernel_size &#xff…

【AI炼丹术】写深度学习代码的一些心得体会

写深度学习代码的一些心得体会 体会1体会2体会3总结内容来源 一般情况下&#xff0c;拿到一批数据之后&#xff0c;首先会根据任务先用领域内经典的Model作为baseline跑通&#xff0c;然后再在这个框架内加入自己设计的Model&#xff0c;微调代码以及修改一些超参数即可。总体流…

Matlab进阶绘图第18期—相关性气泡热图

相关性气泡热图是一种特殊的气泡热图。 与一般的气泡热图相比&#xff0c;其数值位于[-1 1]区间&#xff0c;其颜色用于表示正负&#xff0c;而其气泡的大小用于表示数值绝对值的大小&#xff0c;可以十分直观地对两个变量的相关性进行分析。 由于Matlab中未收录相关性气泡热…

In-Context Learning中的示例选择及效果

一. ICL的背景 大型语言模型&#xff08;LLM&#xff09;如GPT-3是在大规模的互联网文本数据上训练&#xff0c;以给定的前缀来预测生成下一个token&#xff08;Next token prediction&#xff09;。这样简单的训练目标&#xff0c;大规模数据集以及高参数量模型相结合&#x…

国内可直接使用的OpenAI DALL*E 图片AI体验站,可通过自然语言生成图片

体验站最终演示效果 国内可直接使用的图片AI体验站&#xff1a;https://zizhu888.cn/text2img/index.html ChatGPT3.5 Turbo国内体验站: https://zizhu888.cn/chatgpt/index.html OpenAI DALL*E可以通过自然语言生成图片&#xff0c;内容创作者的福音&#xff0c;大大降低了创…

基于飞桨 PaddleVideo 的骨骼行为识别模型 CTR-GCN

main.pysame_seedsparse_argsmain ensemble.pyconfigs 文件夹Joint&#xff08;J&#xff09;的配置文件ctrgcn_fsd_J_fold0.yamlctrgcn_fsd_J_fold1.yaml Joint Angle&#xff08;JA&#xff09;的配置文件ctrgcn_fsd_JA_fold0.yaml paddlevideo 文件夹utils 文件夹__init__.p…

【Python 协程详解】

0.前言 前面讲了线程和进程&#xff0c;其实python还有一个特殊的线程就是协程。 协程不是计算机提供的&#xff0c;计算机只提供&#xff1a;进程、线程。协程是人工创造的一种用户态切换的微进程&#xff0c;使用一个线程去来回切换多个进程。 为什么需要协程&#xff1f; …

中国制造再击败一家海外企业,彻底取得垄断地位

中国制造已在13个行业取得领先优势&#xff0c;凸显出中国制造的快速崛起&#xff0c;日前中国制造又在一个行业彻底击败海外同行&#xff0c;再次证明了中国制造的实力。 一、海外企业承认失败 提前LGD宣布它位于广州的8.5代液晶面板生产线停产&#xff0c;预计该项目将出售给…

crm day03 创建市场活动

页面切割 div切割&#xff0c;ifram显示 如何分割的呢&#xff0c;在主页面上打开iframe $(function(){ //页面加载时window.open("workbench/main/index.do","workareaFrame"); })注意所有在WEB-INF的页面都会收到保护&#xff0c;因此到达此目录下的页…

不得不的创建型模式-建造者模式

目录 建造者模式是什么 下面是一个简单的示例代码&#xff0c;演示了如何使用建造者模式来构建一个复杂对象&#xff1a; 面试中可能遇到的问题及回答&#xff1a; 建造者模式是什么 建造者模式是一种创建型模式&#xff0c;它的目的是将复杂对象的构造过程分离成多个简单的…

你知道项目进度控制和跟踪的目的是什么吗?

项目进度控制和跟踪的目的是&#xff1a; 增强项目进度的透明度&#xff0c;当项目进展与项目计划出现偏差时&#xff0c;可以及时采取适当的措施。 1、计划是项目监控的有效手段 项目控制的手段是根据计划对项目的各项活动进行监控&#xff0c;项目经理可以使用甘特图来制…

界面控件DevExtreme使用指南 - 折叠组件快速入门(二)

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序&#xff0c;该套件附带功能齐…