已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章BLOB数据数据操作和水晶报表,2,9.1 BLOB数据(如图片)处理,1预备知识 二进制大型对象(Binary Large Object,BLOB)是指任何需要存入数据库的随机大块字节流数据,例如图形或声音文件。 对于BLOB数据有两种方式存储 1)文件方式:将BLOB存储在文件中,数据库中保存BLOB数据的文件路径。通过文件操作,进行图像处理 2)字段方式:把图形作为数据库的一个字段值存放在数据库,用数据流方式进行图像读取操作,3,9.1.1文件方式,以学生照片存储为例,每张照片是一个文件,student表中photo字类型varchar (256)保存照片文件路径 步骤: 1、将照片文件存到指定文件,并在表中保存文件路径 1)显示照片 FileInfo file;/声明一个文件对象 /PictureBox控件和OpenFileDialog对话框,找到照片并显示。 OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = “.png文件|*.png|.jpg文件|*.jpg|.jpeg文件|.jpeg|.gif文件|*.gif|.bmp文件|*.bmp“; if (dlg.ShowDialog() = DialogResult.OK) picphoto.Image=Image.FromFile(dlg.FileName); file=new FileInfo(dlg.FileName);/给文件对象赋值 ,4,保存照片(文件保存到程序启动路径) /更新表 string sql = string.Format(“update student set photo=0 where student_id=1“, file.FullName, ds.Tables“student“.Rowsbs.Position“student_id“.ToString(); SqlCommand cmd = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); int i=cmd.ExecuteNonQuery(); DBHelper.connection.Close(); if (i = 1) /更新成功,复制图片文件 file.CopyTo(Application.StartupPath+ ds.Tables“student“.Rowsbs.Position“student_id“.ToString()+file.Extension); ds.Tables“student“.Rowsbs.Position“photo“ =file.FullName; ,5,2)读取数据表中指定记录的照片。 读取数据表中当前记录photo字段的路径值。 PictureBox将指定路径中的图片文件读出。 if (ds.Tables“student“.Rowsbs.Position“photo“. ToString().Trim() != string.Empty) pictureBox1.Image = Image.FromFile(ds.Tables“student“.Rowsbs.Position“photo“.ToString(); else pictureBox1.Image=null;,6,9.1.2字段方式,在PictureBox控件显示Image对象时,有两种方法: PictureBox控件的DataBinding的Text直接绑定字段。 2.未直接绑定到字段方法。使用Stream类进行操作。 说明:Stream是数据流,包含在System.IO大类中。FileStream是用于文件操作的Stream,MemoryStream 在内存封装BLOB数据,这样就能直接访问这些封装的数据。,7,BLOB数据处理方法1,1.数据绑定:在控件的属性窗口,设置pictureBox的DataBindings属性中的Image属性为BindingSource对象表中某个字段. 2.显示图片:移动记录时自动会显示。 3.输入或改变图片: (1)添加openFileDialog1对象 (2)代码如下: if (openFileDialog1.ShowDialog() =DialogResult.OK) 相片PictureBox1.Image = Image.FromFile(openFileDialog1.FileName); oleDbDataAdapter1.Update(dataSet11.学籍表); ,8,BLOB数据处理方法2,Stream通过一个字节类型的数组执行对文件的读写操作。使用Read或Write方法时,需要指定字节起始位置和最多处理的字节数 FileStream使用格式: FileStream(文件路径,FileMode.模式,FileAccess.操作) 模式为:Open、Create 操作为:Read、Write,9,图形数据写入数据库步骤,1.用FileStream对象读模式打开图形文件 FileStream 文件对象=New FileStream(图形文件名, FileMode.Open, FileAccess.Read); 2. 定义字节类型的数组(大小为文件长度) Byte 数组 =new Byte文件对象.Length ; 3. 读文件到数组 文件对象.Read(数组, 0, (int) 文件对象.Length); 文件对象.Close(); 4. 写入到数据集 数据集.Tables数据表.Rows记录号 “图形字段名” =数组 ; 5.更新数据库。,10,例:将一图形文件写入当前记录的照片字段,窗体中添加OpenFileDialog1和PictureBox1控件. 导入名称空间:using System.IO; 输入图片代码如下: If (OpenFileDialog1.ShowDialog() = DialogResult.OK) PictureBox1.Image =image.FromFile(OpenFileDialog1.FileName) FileStream ime=New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read) Byte b=new Byte ime.Length ime.Read(b, 0, (int)ime.Length) ime.Close() Dataset11.Tables “student”.Rowsthis.bindingSource.Position “photo” =b,11,从数据集读取图形数据步骤,1.将记录内的图形读到字节型数组 格式: byte 数组名= (byte) 数据集.tables“表名”.rows记录号“图型字段名” 2.将数组内容传送到Memorystream 格式: System.Io.Memorystream 内存流实例=new System.Io.Memorystream(数组名) 3.用System.Drawing.Image的Fromstream方法将memorystream 加载到控件的图形组件属性内 Picturebox1.Image=System.Drawing.Image. Fromstream(内存流实例 ),12,显示当前记录的照片字段,1.导入名称空间: using System.IO; 2.显示的代码如下: byte ara=dataset11.Tables“student”. Rowsthis.bindingSource.Position“photo” MemoryStream memnew MemoryStream(ara) picturebox1.Image=Image.FromStream(mem),13,9.1 水晶报表,数据库程序开发中,大都需要报表设计。.NET提供Crystal Reports组件使创建和开发复杂报表变得非常简单。本节主要介绍Crystal Reports在C#中的使用。,14,拉模型,在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。使用这种模型时,与数据库的连接和为了获取数据而执行的 SQL 命令都同时由 Crystal Reports本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。,图10.25 拉模型,15,推模型,推模型需要开发人员编写代码以连接到数据库,执行 SQL 命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中,并在 Crystal Reports 收到数据之前先将数据筛选出来。,图10.26 推模型,16,报表设计,Crystal Reports Designer是报表的设计工具,可以在Crystal Reports Designer中创建报表。当向项目中添加Crystal Reports组件或双击Crystal Reports组件时,Crystal Reports Designer将自动启动。 在 Crystal Report Designer 中,首先选择您的报表将要引用的数据源。在一个报表中可使用一个以上的数据源。 接下来,选择要在报表中使用的数据库表。Crystal Reports可自动链接这些表,或者您可以指定链接这些表的方式。将数据库表链接以使来自一个数据库的记录与来自另一个数据库的记录相匹配。,17,9.1.1创建简单报表,可以在C#中创建Windows应用程序的报表和Web应用程序的报表,并分别使用Windows窗体查看器和WEB窗体查看器查看。 下面我们仍以JWGL数据库作为数据源, 1.创建报表 2.在Windows应用程序中承载报表,18,一、创建报表,1、项目菜单/添加新项Crystal报表输入报表文件名 2、使用报表向导 选择新建连接/OLE DB (ADO),点击“+”号,选择“Microsoft OLE DB Provider for SQL Server” 建连接) 3、添加报表中用的表Table1 下一步添加报表中显示的字段下一步分组(可以不分组) 指定筛选记录条件(可不做) 4、选择报表样式,,19,二、 在Windows应用程序中承载报表,在Windows应用程序中承载报表包括下列步骤: 1、向窗体添加一个 CrystalReportViewer控件。 2、设置CrystalReportViewer控件控件的Dock属性为fill,ReportSource属性为report1.rpt。若没分组,则设置DisplayView1Group属性为false.,20,9.1.2 报表设计设计器,Crystal Report Designer 使用类似于 Visual Studio .NET 的拖放方式,即将一个报表对象拖动到设计器(如数据库字段或文本对象)上,然后使用“属性”窗口或快捷菜单格式化该对象。 Crystal Report Designer 分为若干个报表节,如报表页眉、页脚和详细信息。可将报表对象拖动到某个报表节上,并根据需要进行格式化,其中包括:数据库字段、公式字段、参数字段、组名字段、运行总计字段、摘要字段、图表、子报表等。,21,9.3导出excel文件,1、项目菜单/添加引用选择COM选项卡, 选择Microsft Excel Object Library 9.0(9为版本号,不同版本的Office,生成的PIA的版本也不同)。 2、导入名称空间 using Excel; using System.Reflection; /反射名称空间,22,3、编写将表格控件中数据导出excel的代码,private void button6_Click(object sender, EventArgs e) Excel.Application myexcel = new Excel.Application();/创建Excel对象 myexcel.Application.Workbooks.Add(true);/创建一个工作薄 myexcel.Visible = true; /使Excel可视 int columns = dataGridView1.Columns.Count;获得列数 int rows = dataGridView1.Rows.Count;/获得行数 for (int j = 0; j columns; j+) myexcel.Cells1, j+1 = dataGridView1.Columnsj.HeaderText; /将dataGridView1的列名做为excel表格的第一行 for (int i = 1; i = rows; i+) for (int j = 0; j columns; j+) myexcel.Cellsi+1, j+1 = dataGridView1j, i - 1.Value; /导出dataGridView1的每个单元格给excel表格 ,23,9.4 合并项目,1、在解决方案资源管理器中,右击解决方案名/添加/现有项目。 2、在解决方案资源管理器中,右击项目,设置
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年慢病综合征的评估
- 2024农民承包土地合同书
- 专题 07课内阅读(所有课内片段阅读) -2022-2023学年五年级语文下册期末专项复习(部编版)
- 2024简易维修合同格式
- 2024常用房屋装修合同范本
- 2024建筑工程专业分包合同
- 2024建筑工程承包施工合同书格式
- 2024工地运输合同参考范文
- 计算机编程培训课程
- 关于实习生实习报告模板集锦7篇
- 医疗技术临床应用管理办法培训课件
- 有效作业课件
- 水泥生产工艺流程及过程控制培训课件
- 外科护理学试题+答案
- 《幼儿园家园共育研究开题报告(含提纲)》
- 《中医推拿按摩》课件
- 国家5A景区创建简介课件
- 样板间装修方案
- 事业单位人事管理条例完整版x课件
- 河北省衡水市各县区乡镇行政村村庄村名居民村民委员会明细
- 教师对幼儿园管理工作的满意度调查问卷
评论
0/150
提交评论