好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

数据库编程-操作数据.ppt

24页
  • 卖家[上传人]:夏**
  • 文档编号:607651793
  • 上传时间:2025-05-25
  • 文档格式:PPT
  • 文档大小:413KB
  • / 24 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,*,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,*,第9章,BLOB,数据,数据操作和水晶报表,,,1,9.1 BLOB,数据(如图片)处理,,1,.预备知识,,二进制大型对象(,Binary Large Object,,,BLOB),是指任何需要存入数据库的随机大块字节流数据,例如图形或声音文件对于BLOB数据有两种方式存储,,1)文件方式:将BLOB存储在文件中,数据库中保存BLOB数据的文件路径通过文件操作,进行图像处理,,2)字段方式:把图形作为数据库的一个字段值存放在数据库,用数据流方式进行图像读取操作,2,文件方式,以学生照片存储为例,每张照片是一个文件,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);//给文件对象赋值,,},,},,,,,3,,保存照片(文件保存到程序启动路径),,//更新表,,string sql = string.Format("update student set photo='{0}' where student_id='{1}'", file.FullName, ds.Tables["student"].Rows[bs.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"].Rows[bs.Position]["student_id"].ToString()+file.Extension);,,ds.Tables["student"].Rows[bs.Position]["photo"] =file.FullName;,,},4,,2)读取数据表中指定记录的照片。

      读取数据表中当前记录photo字段的路径值PictureBox将指定路径中的图片文件读出if (ds.Tables["student"].Rows[bs.Position]["photo"]. ToString().Trim() != string.Empty),,pictureBox1.Image = Image.FromFile(ds.Tables["student"].Rows[bs.Position]["photo"].ToString());,,else,,pictureBox1.Image=null;,5,字段方式,在,PictureBox,控件显示,Image,对象时,有两种方法:,,PictureBox,控件的,DataBinding,的,Text,直接绑定字段2.,未直接绑定到字段方法使用,Stream,类进行操作说明:,Stream,是数据流,包含在,System.IO,大类中FileStream,是用于文件操作的,Stream,,,MemoryStream,,在内存封装,BLOB,数据,这样就能直接访问这些封装的数据6,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.学籍表);,,},7,BLOB,数据处理方法2,Stream,通过一个字节类型的数组执行对文件的读写操作使用Read或Write方法时,需要指定字节起始位置和最多处理的字节数,,FileStream,使用格式:,,FileStream,(,文件路径,,,FileMode.,模式,,,FileAccess.,操作,),,模式为:,Open,、,Create,,操作为:,Read,、,Write,,8,图形数据写入数据库步骤,1.用FileStream对象读模式打开图形文件,,FileStream 文件对象=New FileStream(图形文件名, FileMode.Open, FileAccess.Read);,,2. 定义字节类型的数组(大小为文件长度),,,Byte [ ] 数组 =new Byte[文件对象.Length ];,,3. 读文件到数组,,文件对象.Read(数组, 0, (int) 文件对象.Length);,,文件对象.Close();,,4. 写入到数据集,,数据集.Tables[数据表].Rows[记录号] [“图形字段名”] =数组 ;,,5.更新数据库。

      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.Length],,ime.Read(b, 0, (int)ime.Length),,ime.Close(),,Dataset11.Tables [“student”].Rows[,this.bindingSource.Position,] [“photo”] =,b,,10,从数据集读取图形数据步骤,1.将记录内的图形读到字节型数组,,格式: byte [] 数组名=,,(byte[]),数据集.tables[“表名”].rows[记录号][“图型字段名”],,2.将数组内容传送到Memorystream,,格式: System.Io.Memorystream 内存流实例=new System.Io.Memorystream(数组名),,3.用的Fromstream方法将memorystream 加载到控件的图形组件属性内,,Picturebox1.Image=System.Drawing.Image.,,Fromstream(内存流实例 ),11,显示当前记录的照片字段,1.,导入名称空间:,,using System.IO;,,2.显示的代码如下:,,byte [] ara=dataset11.Tables[“student”]. Rows[this.bindingSource.Position][“photo”],,MemoryStream mem=new MemoryStream(ara),,picturebox1.Image=Image.FromStream(mem),12,9.1,水晶报表,,,,数据库程序开发中,大都需要报表设计。

      NET提供,Crystal Reports组件使创建和开发复杂报表变得非常简单本节主要介绍,Crystal Reports,在C#中的使用13,拉模型,在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来使用这种模型时,与数据库的连接和为了获取数据而执行的 SQL 命令都同时由 Crystal Reports本身处理,不需要开发人员编写代码如果在运行时无须编写任何特殊代码,则使用拉模型图10.25 拉模型,,14,推模型,推模型需要开发人员编写代码以连接到数据库,执行 SQL 命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表该方法使您可以将连接共享置入应用程序中,并在 Crystal Reports 收到数据之前先将数据筛选出来图10.26 推模型,,15,报表设计,,,Crystal Reports Designer是报表的设计工具,可以在Crystal Reports Designer中创建报表当向项目中添加Crystal Reports组件或双击Crystal Reports组件时,Crystal Reports Designer将自动启动在 Crystal Report Designer 中,首先选择您的报表将要引用的数据源。

      在一个报表中可使用一个以上的数据源 接下来,选择要在报表中使用的数据库表Crystal Reports可自动链接这些表,或者您可以指定链接这些表的方式将数据库表链接以使来自一个数据库的记录与来自另一个数据库的记录相匹配16,创建简单报表,,,可以在C#中创建Windows应用程序的报表和Web应用程序的报表,并分别使用Windows窗体查看器和WEB窗体查看器查看下面我们仍以JWGL数据库作为数据源,,,1.创建报表,,2.,在Windows应用程序中承载报表,,17,一、创建报表,1、项目菜单/添加新项—Crystal报表—输入报表文件名,,2、使用报表向导,,选择新建连接/[OLE DB (ADO)],点击“+”号,选择“Microsoft OLE DB Provider for SQL Server”,建连接),,3、添加报表中用的表Table1,,下一步,,添加报表中显示的字段,,下一步,,分组(可以不分组),指定筛选记录条件(可不做),,4、选择报表样式,,,18,二、 在Windows应用程序中承载报表,,在Windows应用程序中承载报表包括下列步骤:,,1、向窗体添加一个 CrystalReportViewer控件。

      2、设置,CrystalReportViewer控件,控件的[Dock]属性为[fill],[ReportSource]属性为[report1.rpt]若没分组,则设置DisplayView1Group属性为false.,,,,19,报表设计设计器,,Crystal Report Designer 使用类似于 Visual Studio .NET 的拖放方式,即将一个报表对象拖动到设计器(如数据库字段或文本对象)上,然后使用“属性”窗口或快捷菜单格式化该对象Crystal Report Designer 分为若干个报表节,如报表页眉、页脚和详细信息可将报表对象拖动到某个报表节上,并根据需要进行格式化,其中包括:数据库字段、公式字段、参数字段、组名字段、运行总计字段、摘要字段、图表、子报表等20,9.3导出excel文件,1、项目菜单/添加引用→,选择,COM,选项卡,,→,选择Microsft,Excel,Object Library 9.0(9,为版本号,不同版本的,Office,,生成的,PIA,的版本也不同,),2、导入,名称空间,,using Excel;,,using System.Reflection;,//,反射名称空间,,21,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;//获得行数,,f,or (int j = 0; j < columns; j++),,{ myexcel.Cells[1, j+1] = dataGridView1.Columns[j].HeaderText;,,}//将dataGridView1,的列名做为excel表格的第一行,,for (int i = 1; i <= rows; i++),,{ for (int j = 0; j < columns; j++),,{ myexcel.Cells[i+1, j+1] = dataGridView1[j, i - 1].Value;,,}//导出dataGridView1,的每个单元格给excel表格,,},,},22,9.4 合并项目,1、在解决方案资源管理器中,右击解决方案名/添加/现有项目。

      2、在解决方案资源管理器中,右击项目,设置启动项目,,3、在启动项目中,添加引用,选择项目选项卡/选择要合并的项目,,4、在启动项目中导入名称空间:,,using 合并的项目名,23,9.5打包发布,1、文件菜单/新建/项目,,2、选择其他项目类型/安装和部署→安装向导→输入项目名称→解决方案/选择添入解决方案,,3、选择一种项目类型:“WINDOWS应用程序”,,4、选择“主输出来自**项目”(须为启动项目),,5、选择要包括的文件中添加启动项目文件夹/bin/debug/启动程序文件,,6、重新生成解决方案,,7、右击安装项目名,分别进行生成、安装和卸载8、将安装项目/bin/debug/所有文件复制到U盘或光盘即可在不同电脑上运行了,,24,。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.