数据库编程-操作数据

上传人:san****019 文档编号:71459005 上传时间:2019-01-20 格式:PPT 页数:24 大小:673.31KB
返回 下载 相关 举报
数据库编程-操作数据_第1页
第1页 / 共24页
数据库编程-操作数据_第2页
第2页 / 共24页
数据库编程-操作数据_第3页
第3页 / 共24页
数据库编程-操作数据_第4页
第4页 / 共24页
数据库编程-操作数据_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《数据库编程-操作数据》由会员分享,可在线阅读,更多相关《数据库编程-操作数据(24页珍藏版)》请在金锄头文库上搜索。

1、第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、将照

2、片文件存到指定文件,并在表中保存文件路径 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

3、); 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.O

4、pen(); 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字段的路径值

5、。 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直

6、接绑定字段。 2.未直接绑定到字段方法。使用Stream类进行操作。 说明:Stream是数据流,包含在System.IO大类中。FileStream是用于文件操作的Stream,MemoryStream 在内存封装BLOB数据,这样就能直接访问这些封装的数据。,7,BLOB数据处理方法1,1.数据绑定:在控件的属性窗口,设置pictureBox的DataBindings属性中的Image属性为BindingSource对象表中某个字段. 2.显示图片:移动记录时自动会显示。 3.输入或改变图片: (1)添加openFileDialog1对象 (2)代码如下: if (openFileDial

7、og1.ShowDialog() =DialogResult.OK) 相片PictureBox1.Image = Image.FromFile(openFileDialog1.FileName); oleDbDataAdapter1.Update(dataSet11.学籍表); ,8,BLOB数据处理方法2,Stream通过一个字节类型的数组执行对文件的读写操作。使用Read或Write方法时,需要指定字节起始位置和最多处理的字节数 FileStream使用格式: FileStream(文件路径,FileMode.模式,FileAccess.操作) 模式为:Open、Create 操作为:Re

8、ad、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,例:将一图形文件写

9、入当前记录的照片字段,窗体中添加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

10、.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.用Sys

11、tem.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

12、=Image.FromStream(mem),13,9.1 水晶报表,数据库程序开发中,大都需要报表设计。.NET提供Crystal Reports组件使创建和开发复杂报表变得非常简单。本节主要介绍Crystal Reports在C#中的使用。,14,拉模型,在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。使用这种模型时,与数据库的连接和为了获取数据而执行的 SQL 命令都同时由 Crystal Reports本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。,图10.25 拉模型,15,推模型,推模型需要开发人员编写代码以连接到数据库,执行 SQ

13、L 命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中,并在 Crystal Reports 收到数据之前先将数据筛选出来。,图10.26 推模型,16,报表设计,Crystal Reports Designer是报表的设计工具,可以在Crystal Reports Designer中创建报表。当向项目中添加Crystal Reports组件或双击Crystal Reports组件时,Crystal Reports Designer将自动启动。 在 Crystal Report Designer 中,首先选择您的报表将要引用的数据源。在

14、一个报表中可使用一个以上的数据源。 接下来,选择要在报表中使用的数据库表。Crystal Reports可自动链接这些表,或者您可以指定链接这些表的方式。将数据库表链接以使来自一个数据库的记录与来自另一个数据库的记录相匹配。,17,9.1.1创建简单报表,可以在C#中创建Windows应用程序的报表和Web应用程序的报表,并分别使用Windows窗体查看器和WEB窗体查看器查看。 下面我们仍以JWGL数据库作为数据源, 1.创建报表 2.在Windows应用程序中承载报表,18,一、创建报表,1、项目菜单/添加新项Crystal报表输入报表文件名 2、使用报表向导 选择新建连接/OLE DB

15、(ADO),点击“+”号,选择“Microsoft OLE DB Provider for SQL Server” 建连接) 3、添加报表中用的表Table1 下一步添加报表中显示的字段下一步分组(可以不分组) 指定筛选记录条件(可不做) 4、选择报表样式,,19,二、 在Windows应用程序中承载报表,在Windows应用程序中承载报表包括下列步骤: 1、向窗体添加一个 CrystalReportViewer控件。 2、设置CrystalReportViewer控件控件的Dock属性为fill,ReportSource属性为report1.rpt。若没分组,则设置DisplayView1G

16、roup属性为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,生

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号