




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章BLOB数据数据操作和水晶报表,2,9.1BLOB数据(如图片)处理,1预备知识二进制大型对象(BinaryLargeObject,BLOB)是指任何需要存入数据库的随机大块字节流数据,例如图形或声音文件。对于BLOB数据有两种方式存储1)文件方式:将BLOB存储在文件中,数据库中保存BLOB数据的文件路径。通过文件操作,进行图像处理2)字段方式:把图形作为数据库的一个字段值存放在数据库,用数据流方式进行图像读取操作,3,9.1.1文件方式,以学生照片存储为例,每张照片是一个文件,student表中photo字类型varchar(256)保存照片文件路径步骤:1、将照片文件存到指定文件,并在表中保存文件路径1)显示照片FileInfofile;/声明一个文件对象/PictureBox控件和OpenFileDialog对话框,找到照片并显示。OpenFileDialogdlg=newOpenFileDialog();dlg.Filter=.png文件|*.png|.jpg文件|*.jpg|.jpeg文件|.jpeg|.gif文件|*.gif|.bmp文件|*.bmp;if(dlg.ShowDialog()=DialogResult.OK)picphoto.Image=Image.FromFile(dlg.FileName);file=newFileInfo(dlg.FileName);/给文件对象赋值,4,保存照片(文件保存到程序启动路径)/更新表stringsql=string.Format(updatestudentsetphoto=0wherestudent_id=1,file.FullName,ds.Tablesstudent.Rowsbs.Positionstudent_id.ToString();SqlCommandcmd=newSqlCommand(sql,DBHelper.connection);DBHelper.connection.Open();inti=cmd.ExecuteNonQuery();DBHelper.connection.Close();if(i=1)/更新成功,复制图片文件file.CopyTo(Application.StartupPath+ds.Tablesstudent.Rowsbs.Positionstudent_id.ToString()+file.Extension);ds.Tablesstudent.Rowsbs.Positionphoto=file.FullName;,5,2)读取数据表中指定记录的照片。读取数据表中当前记录photo字段的路径值。PictureBox将指定路径中的图片文件读出。if(ds.Tablesstudent.Rowsbs.Positionphoto.ToString().Trim()!=string.Empty)pictureBox1.Image=Image.FromFile(ds.Tablesstudent.Rowsbs.Positionphoto.ToString();elsepictureBox1.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文件对象=NewFileStream(图形文件名,FileMode.Open,FileAccess.Read);2.定义字节类型的数组(大小为文件长度)Byte数组=newByte文件对象.Length;3.读文件到数组文件对象.Read(数组,0,(int)文件对象.Length);文件对象.Close();4.写入到数据集数据集.Tables数据表.Rows记录号“图形字段名”=数组;5.更新数据库。,10,例:将一图形文件写入当前记录的照片字段,窗体中添加OpenFileDialog1和PictureBox1控件.导入名称空间:usingSystem.IO;输入图片代码如下:If(OpenFileDialog1.ShowDialog()=DialogResult.OK)PictureBox1.Image=image.FromFile(OpenFileDialog1.FileName)FileStreamime=NewFileStream(OpenFileDialog1.FileName,FileMode.Open,FileAccess.Read)Byteb=newByteime.Lengthime.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内存流实例=newSystem.Io.Memorystream(数组名)3.用System.Drawing.Image的Fromstream方法将memorystream加载到控件的图形组件属性内Picturebox1.Image=System.Drawing.Image.Fromstream(内存流实例),12,显示当前记录的照片字段,1.导入名称空间:usingSystem.IO;2.显示的代码如下:byteara=dataset11.Tables“student”.Rowsthis.bindingSource.Position“photo”MemoryStreammemnewMemoryStream(ara)picturebox1.Image=Image.FromStream(mem),13,9.1水晶报表,数据库程序开发中,大都需要报表设计。.NET提供CrystalReports组件使创建和开发复杂报表变得非常简单。本节主要介绍CrystalReports在C#中的使用。,14,拉模型,在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。使用这种模型时,与数据库的连接和为了获取数据而执行的SQL命令都同时由CrystalReports本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。,图10.25拉模型,15,推模型,推模型需要开发人员编写代码以连接到数据库,执行SQL命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中,并在CrystalReports收到数据之前先将数据筛选出来。,图10.26推模型,16,报表设计,CrystalReportsDesigner是报表的设计工具,可以在CrystalReportsDesigner中创建报表。当向项目中添加CrystalReports组件或双击CrystalReports组件时,CrystalReportsDesigner将自动启动。在CrystalReportDesigner中,首先选择您的报表将要引用的数据源。在一个报表中可使用一个以上的数据源。接下来,选择要在报表中使用的数据库表。CrystalReports可自动链接这些表,或者您可以指定链接这些表的方式。将数据库表链接以使来自一个数据库的记录与来自另一个数据库的记录相匹配。,17,9.1.1创建简单报表,可以在C#中创建Windows应用程序的报表和Web应用程序的报表,并分别使用Windows窗体查看器和WEB窗体查看器查看。下面我们仍以JWGL数据库作为数据源,1.创建报表2.在Windows应用程序中承载报表,18,一、创建报表,1、项目菜单/添加新项Crystal报表输入报表文件名2、使用报表向导选择新建连接/OLEDB(ADO),点击“+”号,选择“MicrosoftOLEDBProviderforSQLServer”建连接)3、添加报表中用的表Table1下一步添加报表中显示的字段下一步分组(可以不分组)指定筛选记录条件(可不做)4、选择报表样式,,19,二、在Windows应用程序中承载报表,在Windows应用程序中承载报表包括下列步骤:1、向窗体添加一个CrystalReportViewer控件。2、设置CrystalReportViewer控件控件的Dock属性为fill,ReportSource属性为report1.rpt。若没分组,则设置DisplayView1Group属性为false.,20,9.1.2报表设计设计器,CrystalReportDesigner使用类似于VisualStudio.NET的拖放方式,即将一个报表对象拖动到设计器(如数据库字段或文本对象)上,然后使用“属性”窗口或快捷菜单格式化该对象。CrystalReportDesigner分为若干个报表节,如报表页眉、页脚和详细信息。可将报表对象拖动到某个报表节上,并根据需要进行格式化,其中包括:数据库字段、公式字段、参数字段、组名字段、运行总计字段、摘要字段、图表、子报表等。,21,9.3导出excel文件,1、项目菜单/添加引用选择COM选项卡,选择MicrosftExcelObjectLibrary9.0(9为版本号,不同版本的Office,生成的PIA的版本也不同)。2、导入名称空间usingExcel;usingSystem.Reflection;/反射名称空间,22,3、编写将表格控件中数据导出excel的代码,privatevoidbutton6_Click(objectsender,EventArgse)Excel.Applicationmyexcel=newExcel.Application();/创建Excel对象myexcel.Application.Workbooks.Add(true);/创建一个工作薄myexcel.Visible=true;/使Excel可视intcolumns=dataGridView1.Columns.Count;获得列数introws=dataGridView1.Rows.Count;/获得行数for(intj=0;jcolumns;j+)myexcel.Cells1,j+1=dataGridView1.Columnsj.HeaderText;/将dataGridView1的列名做为excel表格的第一行for(inti=1;i=rows;i+)for(intj=0;jcolumns;j+)myexcel.Cellsi+1,j+1=dataGridView1j,i-1.Value;/导出dataGridView1的每个单元格给excel表格,23,9.4合并项目,1、在解决方案资源管理器中,右击解决方案名/添加/现有项目。2、在解决方案资源管理器中,右击项目,设置启动项目3、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 附着升降脚手架安装拆卸工岗位操作规程考核试卷及答案
- 锯材定长切割工艺考核试卷及答案
- 稀土金属热处理精炼沉积工艺考核试卷及答案
- 2024新版2025秋青岛版科学六三制三年级上册教学课件:第三单元 第10课 哪杯水热
- 职业适应性测试(带答案)
- 高职课程思政教学评价的价值意蕴、实践痛点与行动路向
- 许昌职业技术考试试题及答案
- 安全生产与特种设备相关法规知识试卷含答案
- 银行主任面试题目及答案
- 银行营销技术试题及答案
- 标准方向讲解
- 2024年成都隆科城乡发展集团有限公司招聘笔试冲刺题(带答案解析)
- 超全QC管理流程图2015
- (正式版)YST 1682-2024 镁冶炼行业绿色工厂评价要求
- 小区监控维修方案
- 《国际中文教育概论》课件全套 第1-12章 从对外汉语教学到国际中文教育- 国际中文教育前瞻
- 高血压 糖尿病 健康宣教
- 高职高专院校《作物遗传育种》课程的教学探索获奖科研报告论文
- 2023恒温恒湿实验室工程技术规程
- GB/T 4798.4-2023环境条件分类环境参数组分类及其严酷程度分级第4部分:无气候防护场所固定使用
- 程序设计基础(第3版)(2019年高等教育出版社出版图书)
评论
0/150
提交评论