《数据库操作学习.pptx》由会员分享,可在线阅读,更多相关《数据库操作学习.pptx(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、访问模式数据库SQL SERVERACCESSORACLEMYSQL文本文件数据访问接口ADOADO.NETJDBC数据库连接对象SQL命令对象查询结果集对象数据绑定及显示控件第1页/共77页ADO.NET 结构使用统一的 SQL 数据访问模型实现对各种使用 SQL 语句的数据库的数据访问支持。第2页/共77页ADO.NET 对象模型第3页/共77页2.NET 关于数据库主要的类.NET 有关数据库访问的中间件叫ADO.NET,它是 ADO 的改进 ADO.NET 有关数据库访问的类分为两组:一组是通用的数据库访问类,可以访问所有主流的数据库,但一般用于Access 等。另一组是针对具体数据库
2、专门优化了访问性能的类,专用于 SQL Server 或 Oracle 数据库,是我们主要使用的方式。第4页/共77页.Net 中 SQL Server 数据库的分类.Net 提供了 3 种与 SQL Server 数据库的连接形式。分别为:SQL Server:与 SQL Server 服务器上的数据库连接,这是主流的、也是我们采用的。SQL Server Compact 3.5:更简单的 SQL Server 数据库版本,是基于文件的数据库。SQL Server数据库文件:用于和SQL Server Express 数据库文件建立连接。本书均用SQL Server Express(需要安装
3、),我们不使用该方式,本章与书中差异较大!第5页/共77页通用的数据库访问类名称空间:Syetem.Data.OleDbOleDbConnection:数据库连接/关闭OleDbCommand:发送 SQL 命令或调用存储过程、视图等OleDbDataAdapter:存储数据结果集并填充DataSetOleDbDataReader:存储只能向前读的数据结果集,速度快(保持连接)名称空间:Syetem.DataDataSet:是内存中的“关系数据库”,数据由OleDbDataAdapter 填充,也可以自己添加删除。在断开数据库连接的情况下,DataSet仍然存在第6页/共77页SQLServe
4、r专用访问类名称空间:Syetem.Data.SqlClient SqlConnection:数据库连接/关闭 SqlCommand:发送 SQL 命令或调用存储过程、视图 SqlDataAdapter:存储数据结果集并填充DataSet SqlDataReader:存储只能向前读的数据结果集,速度快 名称空间:Syetem.Data DataSet:实际上是通用的,与前面相同第7页/共77页通用的数据库访问实例对象间的关系各种数据库AOD.NETOleDbConnectionOleDbCommandOleDbDataAdapterOleDbDataReaderDataSet连接SQL命令查询
5、结果集结果集填充数据绑定及显示控件绑定结果集绑定用UML可表示为顺序图第8页/共77页SQL Server 数据库访问实例对象间的关系SQL ServerAOD.NETSqlConnectionSqlCommandSqlDataAdapterSqlDataReaderDataSet连接SQL命令查询结果集结果集填充数据绑定及显示控件绑定结果集绑定用UML可表示为顺序图第9页/共77页3.利用可视化对象直接建立数据访问数据访问可视化工具第10页/共77页操作演示新建一个 Windows 应用程序在菜单“视图”中打开“服务器资源管理器”确保本机的 SQL SERVER 服务已开启,数据库可访问。第
6、11页/共77页连接数据库右键点击“数据连接”,选择“添加连接”或“创建新 SQL SERVER 数据库”可以在此选择数据库服务器、验证方式、数据库等。可点击“测试连接”可点击“更改”选择数据库访问模式第12页/共77页前图中点击“更改”按钮第13页/共77页完成后的情况连接成功,则会出现选择的数据库及其中的数据表等。可以在此进行添加、修改等对数据库的各种操作第14页/共77页新建数据库如果不是使用现有数据库,也可以新建立自己的数据库右键单击“数据连接”,选择“创建新的 SQL Server 数据库”命令,弹出新建窗口第15页/共77页点“确定”后就建立了一个空数据库在“服务器资源管理器”的“
7、数据连接”项下出现该数据库右键单击“表”,选择“添加新表”命令,然后进行表中列的添加,包括列名、数据类型等 单击“保存”按钮,保存名为Class1的表第16页/共77页在“表”列表中,出现Class1表。右键单击Class1,选择“显示表数据”(也许是“检索数据”)命令,然后可以进行记录的添加 信息添加完后,在窗口边缘空白部分右键选择“执行SQL”,即可将数据添加到表中第17页/共77页为项目添加数据源建立好连接后,可为项目添加数据源数据源为项目获取数据的来源。作用是将数据和数据显示控件绑定到一起,便于显示或编辑数据。在“数据”菜单中选择“添加新数据源”,按向导步骤进行,选择希望显示的表、字段
8、等。可以添加多个数据源第18页/共77页添加数据源之后的情况第19页/共77页显示数据并运行在数据源窗口,将需在界面中显示的数据及其使用的控件,拖放到窗体界面中即可第20页/共77页4.使用 OleDb 数据库访问使用“半自动”的方式,主要过程:选择数据源:选为“Microsoft Access 数据库文件”,则采用 OleDb 方式。建立连接:OleDbConnection(可以用对象浏览器看看 OleDbConnection 类的属性和方法)获得数据:OleDbDataAdapter返回查询结果:DataSet绑定到数据控件:DataGrid第21页/共77页建立与现有数据库的连接右键单击
9、“数据连接”,选择“添加连接”命令,弹出窗口,选择数据库类型。第22页/共77页点“继续”,出现添加连接窗口“浏览”按钮找到数据库文件“高级”按钮可以打开具体连接属性的窗口,一般不用。“测试连接”可以先看看连接上没有“确定”,完成添加连接第23页/共77页此时“服务器资源管理器”中出现了我们连接的数据库及其相关内容我们可以通过此连接,开发访问该数据库的程序第24页/共77页使用OleDbDataAdapter访问数据库如果希望自己来通过 应用程序操作数据库,需要先在工具箱中添加 OleDbDataAdapter 等相关组件如果是使用 SQL Server 数据库,应该用 SqlDataAdap
10、ter第25页/共77页添加 OleDbDataAdapter打开“工具箱”右键单击“数据”选择“选择项”出现“选择工具箱”窗口添加 OleDbDataReader 组件可同时选择需要添加的其它组件第26页/共77页第27页/共77页向 Form 中加入 OleDbDataAdapter增加组件后的工具箱如右图将 OleDbDataAdapter 拖到窗口中结果显示在下面第28页/共77页自动出现配置向导第29页/共77页点“下一步”后,由于数据库不在当前项目中,会询问是否复制到项目中。出现命令类型窗口,继续下一步第30页/共77页出现“生成SQL语句”窗口点“查询生成器”“高级选项”按钮可以
11、选择使用哪些语句类型第31页/共77页先选择具体的表,点“添加”也可以选择多个表,选好后点“关闭”第32页/共77页选择要显示的字段,会自动生成查询语句点“执行查询”可以看到结果第33页/共77页如果点“高级选项”会弹出选择窗口可以根据需要的数据库操作进行选择完成 SQL 语句配置后继续下一步会出现结果窗口,也可直接点“完成”。第34页/共77页完成后会自动添加 oleDbConnection 组件下一步需要将当前数据适配器关联到Dataset 对象右键单击“oleDbDataAdapter1”,选择“生成数据集”,出现配置窗口第35页/共77页此处有两个选择:“现有”为已经配置好的“新建”是
12、建立一个新的 DataSet确定后会自动加入一个 DataSet第36页/共77页到了这一步,已经可以将对数据库的查询结果关联到 DataSet 了我们知道,DataSet 是内存中的一个虚拟数据库,严格说是一个数据集后面的工作是要将记录在具体的数据绑定控件中显示出来最常用的数据显示控件是 DataGridView其实象文本框、标签、选择框之类的都可以绑定到 DataSet第37页/共77页绑定到 DataGridView向窗体中添加一个 DataGridView 控件,会出现设置窗口如果没有出现窗口,可在 DataSource 属性进行设置先选择数据源第38页/共77页展开数据源,选一个即可
13、这里选的是“项目数据源”,选择后会增加一个“公司BindingSource”项如果选“Form1列表实例”则无,需要再设置列第39页/共77页文本框的绑定文本框只能显示 DataSet 中当前记录的某一字段(列)的值通过选择属性(DataBindings)中的Text,选择其中的某一列进行绑定 这里选了“公司名称”第40页/共77页填充数据集最后一步工作,就是让数据适配器填充数据集对象 dataSet为当前窗体的 Load 事件添加如下代码:this.oleDbDataAdapter1.Fill(this.dataSet11,0,0,“公司);Fill()方法用于填充数据集对象参数1:要填充的
14、数据集;参数2:从表中第几个记录开始,0为第一个;参数3:返回多少条记录,0 表示全部;参数4:数据来源的表的名称。第41页/共77页运行结果第42页/共77页看看一些关键语句需要引用 using System.Data;我们添加了代码:oleDbDataAdapter1.Fill(dataSet1,0,0,公司);另外系统自动写了很多代码第43页/共77页5.访问 SQL Server 数据库使用 SQL Server 数据库时,应使用针对 SQL Server 数据库优化了的一组组件这里我们全部通过自己写代码的方式,完成下列工作:(例题 UseSql)建立连接:SqlConnection获
15、得数据:SqlDataAdapter返回查询结果:DataSet绑定到数据控件:DataGridView第44页/共77页访问 SQL 数据库要使用优化的 SQL SERVER 对象访问数据库,需要引入以下名字空间:using System.Data;using System.Data.SqlClient;第45页/共77页SqlConnection 对象ADO.NET使用 SqlConnection 对象与 SQL Server 进行连接。连接字符串的常用形式有两种:(1)使用 Windows 集成安全身份验证,例如:string connStr=Integrated Security=SS
16、PI;Database=MyDatabase.mdf;Server=localhost;(2)使用用户名、密码形式,例如:string connStr=Data Source=SDXG;Initial Catalog=park;User ID=sa;Password=saas;第46页/共77页通过代码创建 SqlConnection 对象SqlConnection conn=new SqlConnection(connString);或者:SqlConnection conn=new SqlConnection();conn.ConnectionString=connString;打开连接:
17、conn.Open();注意,使用完后要及时关闭连接:conn.Close();第47页/共77页SqlDataAdapter 对象SqlDataAdapter 通过无连接的方式完成数据库和本地 DataSet 之间的交互。通过查询语句和 SqlConnection 对象,生成 SqlDataAdapter 实例访问数据库并获得数据。例如:string strsql=select*from users;da=new SqlDataAdapter(strsql,conn);第48页/共77页SqlDataAdapter 对象还可以通过SelectCommand、InsertCommand、Upd
18、ateCommand 和 DeleteCommand 属性为后台数据库提供对应的操作命令,并传递需要的参数。第49页/共77页DataSet 对象使用 DataSet 对象可以完成各种数据操作创建 DataSet 后,使用 SqlDataAdapter 对象把数据导入到 DataSet 中。通过 Fill 方法将数据填充到 DataSet 中的某个表中。例如:da.Fill(ds,“newUser”);这里的表名可以随便起第50页/共77页数据绑定数据绑定是指在程序运行时,窗体上的控件自动将其属性和数据源关联在一起。Windows 窗体提供了两种类型的数据绑定:简单数据绑定和复杂数据绑定。简单
19、数据绑定:将控件的某个属性绑定到单个值,一般将这些控件绑定到数据库中某个记录的一个字段。复杂数据绑定:将一个控件绑定到多个值,例如 DataGridView控件、ListBox控件等。第51页/共77页实现数据绑定的方式有3种实现方法:u 在设计界面下通过鼠标拖放实现常用属性的数据绑定;u 在设计界面下设置控件的 DataBindings 属性,然后利用可视化界面实现各种属性的数据绑定;u 直接编写代码实现数据绑定。第52页/共77页直接编写代码实现数据绑定不论采用哪种方式,从本质上来讲,都是利用 BindingSource 组件实现数据绑定的。用法:(1)将 BindingSource 组件
20、绑定到实际数据源(2)将控件绑定的数据源设置为 BindingSource例如:BindingSource bs=new BindingSource();bs.DataSource=ds.TablesnewUser;dataGridView1.DataSource=bs;第53页/共77页6.DataSet 数据绑定及编辑DataSet 类是 ADO.NET 中功能非常强大的一个类DataSet 可以脱离数据库而存在,DataSet 中的数据即可以是来自数据库(由DataAdapter 填充),也可以来自别的数据源,甚至可以是自己创建数据源 第54页/共77页DataSet 工作原理实际上 D
21、ataSet 可以看作是一个内存中的关系型数据库一个关系型数据库包括表、列、行、约束等,DataSet 的体系结构正是如此DataSet 类相当于一个“容器”,内含表的集合,表又内含列、行、约束的集合这些类的关系不是继承关系,而是组成关系 第55页/共77页这些类之间的关系下表只列出了一部分类和集合 DataSet类类 数据集数据集 Tables 集合集合 DataTable类类 数据表数据表 Columns 集合集合 Column类类 数据表的列数据表的列 Rows 集合集合 Row类类 数据表的行数据表的行 Constraints集合集合 Constraint 定义数据约束定义数据约束 第
22、56页/共77页数据更新DataAdapter 可以根据结果集的数据结构,自动创建出与之匹配的 dataSet、dataTable、column、row、constraint 对象,并把数据填到这些对象中 DataSet 实例中包含的数据发生更改后,此时调用 DataAdapter.Update 方法,DataAdapter 将分析已作出的更改并执行相应的命令(INSERT、UPDATE 或 DELETE),并以此命令来更新数据库中的数据 第57页/共77页主要的代码/更新数据库sqlDataAdapter1.Update(dataSet1.TablesAuthors);/确认数据集的变化da
23、taSet1.TablesAuthors.AcceptChanges();l 为例题 UseSql 添加一个按钮,并补充更新按钮,当用户在 DataGridView 中修改记录信息后,将改的更新到数据库。第58页/共77页7.DataGridView 控件当我们需要在界面中显示多条记录时,DataGridView 是最常使用的一个控件。DataGridView 是一个非常复杂的控件,使用好并不容易。数据的填充:可以直接绑定数据源从 DataSet 中获取可以通过编写代码手工填充数据第59页/共77页DataGridView 的属性实际上我们开发的软件一般不允许用户在 DataGridView
24、中随便乱操作。通常 DataGridView 只是用来显示数据DataGridView 有一些 AllowUserTo的属性,决定允许用户做哪些操作第60页/共77页禁止编辑 DataGridView不给用户提供 Updata 功能,也可通过属性设置禁止编辑:readonly=trueDataGridView 的前身是 DataGrid 控件,新版的有一些变化,包括属性,看比较旧的书注意此问题。一些常用属性的使用,我们结合问题逐步介绍。第61页/共77页绑定数据时的默认设置绑定了数据源,会自动为数据源中的每个字段单独创建一列。自动使用字段名称作为列标题。支持自动排序。在列标题中单击或双击,该字
25、段中的值就会按升序或降序排序。支持自动调整列宽。在标题之间的列分隔符上双击,该分隔符左边的列就会自动按照单元格的内容展开或收缩。第62页/共77页标题及行列控制DataGridView 提供了两个重要的集合Columns 和 Rows,用于处理整个数据集。Columns:是表格中的所有列(字段)的集合,为 DataGridViewColumn 对象的集合。Rows:是表格中的所有行(记录)的集合,是 DataGridViewRow 对象的集合。每个 DataGridViewRow 对象又都包含一组DataGridViewCell 对象。可以按使用数组的方式定位到集合的元素第63页/共77页Da
26、taGridViewColumn column=dataGridView1.Columns学号;if(column.HeaderText!=column.DataPropertyName)/让标题与绑定的字段名称相同 column.HeaderText=column.DataPropertyName;else column.HeaderText=Student ID;第64页/共77页了解 Command 对象对象 我们对数据库的操作都是通过 Command 对象的 SQL 字串进行的:/设置SqlCommand 对象SqlCommand SqlCommand1=new System.Data
27、.SqlClient.SqlCommand();/执行的操作SqlCommand1.CommandText=SELECT*FROM Authors;创建连接SqlCommand1.Connection=conn;执行命令,但不返回执行的表数据,只是操作行数 SqlCommand1.ExecuteNonQuery();第65页/共77页SqlCommand 对象主要的数据库操作方法ExecuteNonQuery 方法:该方法执行 SQL 语句的结果,但不返回命令执行的表数据,仅返回操作所影响的行数。ExecuteReader 方法:返回一个 SqlDataReader 对象。ExecuteSca
28、ler()方法:该方法用于执行 SELECT 查询,返回结果为一个值的情况,比如用 sum 函数求和等。第66页/共77页6.访问SQL Server 数据库的视图我们将视图看作是驻留在数据库上的一个或多个SQL语句构成的“虚拟数据表”将它当一般的表来操作就可以 访问视图的方法:通过“服务器资源管理器”先建立一个视图“MyView”然后用与访问数据表类似的方法访问该视图,差别只是将原来连接字符串中的表名改为视图名第67页/共77页不满足于只读,我还想多做点添加和修改记录前提:在适配器配置向导的“高级选项”中没有去掉 Insert、Updata 等选择。原理:控件中显示的是 dataSet 中的
29、内容,而 dataSet 与 Adapter 关联,Adapter 又连接着实际的数据库操作:当对控件中的数据进行了改变,相应的 dataSet 等于也进行了更新,因此只要对 Adapter 提交更新(Updata)即可。第68页/共77页实战在 窗体中添加一个按钮在按钮的 click 方法中添加下列语句:this.oleDbDataAdapter1.Update (this.dataSet11);运行程序,修改一个值,然后点击该按钮第69页/共77页修改前点击“Updata”后关闭程序,再次运行查看对应记录,会看到已经是更新后的结果了第70页/共77页添加新纪录将记录移动到最后一行填写新的记
30、录注意这个例子中“客户ID”是和客户表关联的,不能乱改也不能随便填,必须是现有的。完成后单击按钮第71页/共77页删除记录DataGridView 的行与列不支持手动删除操作,必须要使用代码来实现。在当前窗体的构造函数中添加如下代码。this.dataGridView1.AllowUserToDeleteRows=true;该属性表示DataGridView允许用户删除行。添加“删除”按钮,click 方法添加如下代码:foreach(DataGridViewRow r in dataGridView1.SelectedRows)dataGridView1.Rows.Remove(r);r 表
31、示选中的行,通过Remove()方法将该行删除。第72页/共77页运行程序选中 dataGridView1 中的任意一行单击“删除”按钮注意,此时只是在 dataSet 中删除了,原始数据库没有变还应该单击“更新设置”按钮,将刚才的删除操作的结果提交到数据库。不演示图片了,大家自己应该会做了第73页/共77页练习在 Books.mdb 数据库添加一个新表在 DataGrid 中显示该表单击一 button 后,用 dataSet 对象和 DataAdapter 对象自动更新该表中的值/循环更改Authors表firstName字段的值foreach(DataRow row in dataSet1.TablesAuthors.Rows)rowfirstName=aa;第74页/共77页小结本章对 ADO.NET 数据库编程的主要方面几乎都涉及到了由于课时关系不能详细介绍,只能给你们提供信息和基本的方法书中还有很多内容我们这里没有涉及对编程具体问题要靠自已去研究 第75页/共77页作业完成选课程序在资源管理器中建立数据库建立相应的表并输入一些记录建立数据库连接完成代码编写并调试提交实验报告(包括系统设计、必要的设计图、关键技术说明、代码及界面图等)到服务器(11.28截止)报告文件名格式“学号-姓名.DOC”第76页/共77页感谢您的观看。第77页/共77页
限制150内