资源描述:
,ADO.NET数据库基本操作,承德石油高等专科学校计算机系课程,,,主要内容,数据绑定ADO.NET技术使用ADO.NET对数据库进行基本操作使用DataGrid控件操作数据库,承德石油高等专科学校计算机系课程,1.数据绑定,1.数据绑定,数据绑定是指在程序设计时实现数据源与包含数据的控件之间的连接.数据绑定包括简单型数据绑定将单个数据元素绑定到控件上适用控件Label、TextBox复杂型数据绑定将多个数据元素绑定到一个控件上适用控件DataGrid、DataList,1-1简单型数据绑定,简单绑定的基本语法说明(1)userID是属性名称,“”和“”不能少;(2)该语法支持绑定到公共变量、页面的属性和其它控件的属性,可进行“可视化”绑定操作;(3)后台程序要执行.DataBind;方法。例如(1)绑定到简单属性(2)绑定到控件文本值,1-1简单型数据绑定示例,绑定到控件属性绑定到Label控件的属性将ListBox控件属性值绑定到Label控件的属性,,“runatserver/,绑定到集合将数组myArray绑定到ListBox控件绑定到表达式将表达式值绑定到某控件绑定到方法结果将某方法的结果值绑定到某控件,runat“server“,,,mydatabind.aspx,1-2复杂型数据绑定,复杂型数据绑定可以绑定基础记录源中的多行或多列支持控件有DataGrid、DropDownList和CheckBoxList等。实现方法对控件的DataSource等属性的设置以DataGrid控件为例DataGrid1.DataSourceds;//指出数据源为一个DataSet对象DataGrid1.DataMember“user”;//将DataGrid与ds中user表绑定或者DataGrid1.DataSourceds.Tables[“user“].DefaultView;,2.ADO.NET技术,微软的数据库访问技术发展历史,ODBC,DAO,RDO,OLEDB,ADO,ADO.NET,ODBC开放式数据连接.通过使用ODBC可以访问不同类型的数据源,如MSSQLSERVER,ORACLE,DB2,SYBASE等。ODBC技术主要目的是提供一个对数据源的统一访问接口。利用ODBCAPI来实现。,DAO数据访问对象.是一组建立在ODBC基础上的数据访问组件,其核心是通过“JET数据引擎”组件来达到对ODBCAPI的封装这样就提供了更简易的数据访问方式。并可访问EXCEL、FOXPRO、文本文件等数据源。,RDO远程数据对象.专为C/S架构模式的应用程序高效访问数据库而设计的。与DAO技术针对的目标不一样,各有所长,所以在同一时期共存。,OLEDB(ObjectLinkingandEmbedding,Database),提供了一个和数据源无关的数据访问方法。即客户端程序在数据库操作时不关心所访问的数据来自于何种数据库或文件。OLEDB提供了数据提供者和数据访问者两种核心心组件(OLEDBAPI).,ADOActiveXDataObject访问数据对象.是对OLEDBAPI的封闭和抽象,简单化了OLEDBAPI的编程.在很长时间内,该技术有取代DAO和RDO技术的趋势,但它并不完全支持DAO技术的全部特征,如针对Jet引擎的处理.,ADO.NET基于XML的数据库访问技术,针对之前数据访问方式的混乱和不统一而提出的一个统一的数据访问技术,在性能上进一步优化和改进,该技术提供了真正意义上的独立于任何数据源的数据访问.,,,,,,ADO.NET的基本特点,.NETFramework类库中包含的一整套数据访问技术,用于提供对关系数据和XML的访问ADO.NET的基本特点全新的、灵活性更强的ADO支持连接模式和非连接模式下的数据库访问支持XML的编程模型使用XML数据传输格式简化了Web应用程序查询数据库的过程,ADO.NET组件概述,ADO.NET组件是.NET应用程序的数据访问模型。它能用于访问关系型数据库系统。ADO.NET提供两个核心的组件1).NET数据提供程序(数据供应器)提供应用程序与远程数据库间的联系.桥梁作用不同数据源有不同的数据提供程序.2)DataSet(数据集)相当于本地数据库,具有与远程数据库无关性.通过”数据提供程序”与远程数据库联系.,ADO.NET组件结构模型,数据库,.NET数据提供程序,Connection连接对象,Command命令对象,DataAdapter数据适配器,DataReader指向前的数据流,DataSet,DataTable,DataRowDataColumnUniqueConstraintForeignKeyConstraintDataRelationCollection,,,DataAdapter数据适配器从数据库中检索数据,填充Fill方法在本地数据集DataSet中,同时可以利用DataAdapter反向从DataSet更新回数据库.,DataSet相当于本地数据库,由多个表构成,每个表又包含行、列和约束(唯一约束、外部约束),以及关系。,2-1.NET数据提供程序,.NET数据提供程序,SQL.NET数据提供程序,OLEDB.NET数据提供程序,,,Connection,建立与数据库的连接,对象,Command,检索和操纵数据库中的数据,DataReader,从数据源中读取”只进且只读”的数据流接口,DataAdapter,用数据源填充DataSet并解析更新数据源和DataSet的桥梁,Connection对象,SqlConnectionsqlconnewSqlConnection“server;uid;pwd;database“;,OleDbConnectionadoconnewOleDbConnection“ProviderSQLOLEDB;DataSource;InitialCatalog;UserId;Password“;,SQL.NET数据提供程序,OLEDB.NET数据提供程序,sqlcon.Open;sqlcon.Close;adocon.Open;adocon.Close;,Connection的打开和关闭,OleDbConnectionadoconnewOleDbConnection“ProviderMicrosoft.Jet.OLEDB.4.0;“;,Command对象用Command对象访问数据表,创建Command对象有两种方式其一使用Command对象的构造函数其二使用Connection对象的CreateCommand方法用Command对象访问数据表的操作有检索、更新、插入、删除,SqlCommandsqlcomnewSqlCommand“select*fromemployee“,sqlcon;,SqlCommandsqlcomsqlcon.CreateCommand;Sqlcom.CommandText“select*fromemployee“;,SqlConnectionsqlconnewSqlConnection“server;uid;“;sqlcon.open;,Command对象-1/4,SqlCommandsqlcomnewSqlCommand“select*fromemployee“,sqlcon;,OleDbCommandadocomnewOleDbCommand“select*fromemployee“,adocon;,SQL.NET数据提供程序,OLEDB.NET数据提供程序,检索数据,Command对象-2/4,OleDbCommandinscomnewOleDbCommand“insertintoemployeuesARD25437A,John,P,Baxter,7,100,0877,1989-11-11T000000“,adocon;,SQL.NET数据提供程序,OLEDB.NET数据提供程序,插入数据,SqlCommandinscomnewSqlCommand“insertintoemployeuesARD25437A,John,P,Baxter,7,100,0877,1989-11-11T000000“,sqlcon;,Command对象-3/4,OleDbCommandmycommandnewOleDbCommand“UPDATEemployeeSETjob_id11WHEREfnamePedro“,adocon;,SQL.NET数据提供程序,OLEDB.NET数据提供程序,更新数据,SqlCommandmycommandnewSqlCommand“UPDATEemployeeSETjob_id11WHEREfnamePedro“,sqlcon;,OleDbCommanddelcomnewOleDbCommand“deletefromemployeeWHEREfnameLesley“,adocon;,SQL.NET数据提供程序,OLEDB.NET数据提供程序,删除数据,SqlCommanddelcomnewSqlCommand“deletefromemployeeWHEREfnameLesley“,sqlcon;,Command对象-4/4,创建Command对象访问数据表的操作_小结,用Command对象访问数据表的操作有检索、更新、插入、删除创建Command对象有两种方式以SQL.NET数据提供程序为例其一使用Command对象的构造函数其二使用Connection对象的CreateCommand方法,SqlCommandsqlcomnewSqlCommand“SQL语句“,sqlcon;,SqlCommandsqlcomsqlcon.CreateCommand;Sqlcom.CommandText“SQL语句“;,创建了Command对象之后,如何执行命令操作呢,Command对象-方法用于执行Command命令,创建了Command对象之后,要用它的一cute方法来完成命令的执行。,DataReader对象,从数据库中读取数据,实现了对数据源的只读访问采用连接的、只向前的、游标方式的访问包括OleDbDataReader对象和SqlDataReader对象,例OleDbDataReaderodr.cuteReader;Whileodr.Read{},DataAdapter对象,它的作用就是把来自特定数据源的信息调整为关系型数据格式,以适应本地数据库DataSet的需要。DataSetDataAdapter的SelectCommand属性是一个Command对象,它从数据源中检索数据DataAdapter的Fill方法用于使用DataAdapter的SelectCommand的结果来填充DataSetDataAdapter的Update方法用来将DataSet中的更改解析回数据源ADO.NET中包括OleDbDataAdapter和SqlDataAdapter等对象,OleDbDataAdapterodanewOleDbDataAdapter“Select*fromvote“,con;DataSetdsnewDataSet;oda.Fillds,“vote“;,DataAdapter,数据适配器是ADO.NET托管提供程序的组成部分,适配器用于在数据源和数据集之间交换数据,数据适配器可以在任意源和数据集之间移动数据.使用DataAdapter填充数据集DataAdapter的SelectCommand属性是一个Command对象,它从数据源中检索数据DataAdapter的Fill方法用于使用DataAdapter的SelectCommand的结果来填充DataSet使用DataAdapter操作数据库DataAdapter的Update方法可用来将DataSet中的更改解析回数据源DataAdapter的InsertCommand、UpdateCommand和DeleteCommand属性也是Command对象DataAdapter将使用InsertCommand、UpdateCommand或DeleteCommand来处理该更改,总结,OleDbConnection、OleDbCommand、OleDbDataReader和OleDbDataAdapter等可以连接到所有基于OLEDB提供的数据库SqlConnection、SqlCommand、SqlDataReader和SqlDataAdapter等可以连接到MSSQLServer。对于SQLServer而言,使用第二套类库在性能上优于第一套。,,,,,,SQLServer2000,DataSet,DataTable,DataTable,物理存储数据,,OleDb数据库,,,SqlDataAdapter,,SqlConnection,,DataTable,Web服务器内存,OleDbDataAdapter,OleDbConnection,2-2DataSet控件,DataSet中有两个重要的集合DataTables和DataRelations,DataSet相当于本地数据库,由多个表构成.,2-2DataSet控件采用断开式数据连接方式,断开式连接的必要性大部分数据库仅能同时维护少数连接应用程序的性能取决于用户数量对于Web应用程序而言,维护与数据库的持续连接并不可行断开式连接使Internet上的大量用户同时访问数据库成为可能.请求-断开-再请求,3.使用ADO.NET组件进行数据库操作,将数据库内容在Web页面显示,前提引入命名空间,使用Imports或using语句导入命名空间ADO.NET使用的命名空间包括System.DataSystem.Data.SqlClientSystem.Data.OleDb,ImportsSystem.DataImportsSystem.Data.SqlClientImportsSystem.Data.OleDb,usingSystem.Data;usingSystem.Data.SqlClient;UsingSystem.Data.OleDb;,使用ADO.NET将数据库内容进行页面显示的操作途径,两种途径Connection-Command-DataReader工作流程使用Connection对象连接数据库;使用Open方法打开数据库连接;使用Command对象访问数据库;使用DataReader读取、显示输出;使用Close方法断开数据库。Connection-DataAdapter-DataSet工作流程使用Connection对象连接数据库;创建数据适配器DataAdapter对象;使用DataSet存放数据表;使用DataGrid等显示处理数据表。,区别,,示例实现复杂型数据绑定显示,(1)用Connection-Command-DataReader实现将CheckBoxList与数据库字段绑定显示。,(2)用Connection-DataAdapter-DataSet实现将RadioButtonList与数据库字段绑定显示。,mydatabind.aspx,区别,独占式数据连接-显示打开/关闭断开式数据连接-隐式打开/关闭,使用ADO.NET将数据库内容进行页面显示的操作途径,代码参考1,代码参考2,ADO.NET对数据库各种操作示例利用途径一实现),(1)利用select语句查询记录selectData.aspx,(2)利用insert语句插入记录insertData.aspx,(3)利用update语句更新记录updateData.aspx,(4)利用delete语句删除记录deleteData.aspx,ADO.NET对数据库各种操作其它附加提示1,(1)数据库连接字符串中使用““其作用为忽略掉字符串中的转义字符。,(2)执行insert操作时,如果插入到某字段的值为字符串变量,则需要使用“”连接;如果插入的为日期值,则需要使用“”连接。,StringconStr”ProviderMicrosoft.Jet.OLEDB.4.0;DataSourceD\mysite\mytest.mdb”,StringstrSql”insertintouserinfousernamevalues‘“txtName.Text”‘”;,StringstrSql”insertintouserinforegister_timevalues““System.DateTime.Now””;,(3)执行SQL操作时,如果数据库字段名为password,false,true,float,end,and,order,size等保留字时,需要用“[]”将这些字段括起来。,(4)页面数据显示时,有时需要将某对象的AutoPostBack属性值设置为True,从而实现自动提交,当自动提交时,将自动触发该对象的相关事件达到更新页面内容的目的。,(5)为了准确显示数据库信息,数据库中的数据每发生一次改变,都要对数据库进行重新绑定。,ADO.NET对数据库各种操作其它附加提示2,定义数据适配器对象DataAdapter的方法方法一先定义数据适配器对象,然后设置该对象的SelectCommand属性。OleDbDataAdaptervoteOdanewOleDbDataAdapter;voteOda.SelectCommandnewOleDbCommand“Select*fromvote“,con;方法二先定义command对象,然后基于该对象建立数据适配器对象。OleDbCommandvotenewOleDbCommand“Select*fromvote“,con;OleDbDataAdaptervoteOdanewOleDbDataAdaptervote;方法三直接定义数据适配器对象,隐含建立command对象。OleDbDataAdaptervoteOdanewOleDbDataAdapter“Select*fromvote“,con;,4.使用DataGrid控件操作数据库,4-0-1使用DataGrid控件操作数据库,DataGrid控件是很常用的数据库控件,使用这个控件,可以创建Web报表和数据编辑页面支持分页在网格中显式数据,网格中的列数可以根据数据源中字段的数量自动确定,也可以手动确定网格中列的数量,4-0-2DataGrid控件语法,,4-1将数据绑定到DataGrid控件的语法,将数据绑定到DataGrid控件的语法DataGrid控件名称.DataSource数据对象;//指定数据源DataGrid控件名称.DataBind;//将DataGrid控件与数据源绑定提示在每次指定DataSource,或者如果数据内容发生变化后,都要重新执行DataBind;,4-2DataGrid控件的常用属性,4-3DataGrid控件的常用事件,4-4DataGrid控件的使用,DataGrid控件的显示样式的设置法一可以通过布局、样式和外观等属性进行设置。法二通过[自动套用格式]来设置(该按钮位于[属性]窗口下方),DataGrid控件使用示例查询,然后在DataGrid控件中显示查询所得数据表信息。1利用途径一来实现;2利用途径二来实现。,mydatabind.aspx,区别,独占式数据连接-显示打开/关闭断开式数据连接-隐式打开/关闭,参考代码(1),参考代码(2),,(1)查询记录途径1datagridselect.aspx途径2datagridselect2.aspx,(2)更新数据datagridUpdate.aspx,(3)删除数据datagridDelete.aspx,DataGrid控件综合示例,DataGrid控件使用其它附加提示1,(1)如果要检索出多个表,如何填充到DataSet对象中,需要说明的是,在SQLServer中,可以一次执行多条SQL语句。Access一次只能执行一条SQL。Access使用的是Jet-SQL,SQLServer使用的是T-SQL,两者用法上有差别。所以上面的用法只适用于操作SQLServer。否则会有如下错误提示“在SQL语句结尾之后找到字符“。,SqlDataAdapterdanewSqlDataAdapter“Select*frommyTable1;Select*frommyTable2;”,con;,DataSetdsnewDataSet;da.Fillds,“table”;,DataGrid1.DataSourceds.Tables[“table”].DefaultView;DataGrid1.Databind;,DataGrid2.DataSourceds.Tables[“table1”].DefaultView;DataGrid2.Databind;,DataGrid控件使用其它附加提示2,(2)更新数据表时涉及的关键操作,使用DataGrid控件实现更新数据。在声明DataGrid控件时添加(编辑、更新、取消)EditCommandColumn列,,更新数据表操作将涉及三个事件1)OnEditCommand事件,该事件中的重点语句为DataGrid1.EditItemIndexe.Item.ItemIndex;MyBind;2)OnUpdateCommand事件,在该事件中与数据库连接,做更新操作;注意,更新操作后要执行DataGrid1.EditItemIndex-1;MyBind;3)OnCancelCommand事件,该事件中的重点语句为DataGrid1.EditItemIndex-1;MyBind;,设定“数据源”并绑定,注意不要忘记设定DataKeyField“关键字段”,为引用DataGrid1.DataKeys[e.Item.ItemIndex]做准备。,DataGrid控件使用其它附加提示3,(3)删除数据表时的关键操作,删除数据时,需要在DataGrid控件中添加“删除”按钮列。选择了DataGrid控件的Columns属性后,在弹出的对话框中向“选定列”中添加“删除”按钮列,并对文本和按钮类型进行相应设置,设定“数据源”并绑定,注意不要忘记设定DataKeyField“关键字段”,为引用DataGrid1.DataKeys[e.Item.ItemIndex]做准备。,删除数据表操作将涉及DeleteCommand事件;执行删除操作后要重新绑定数据。,问题拓展如何实现在“删除”前提示“是否确认删除”,问题拓展如何实现在“删除”前提示“是否确认删除”,privatevoiduserDataGrid_ItemCreatedobjectsender,System.Web.UI.WebControls.DataGridItemEventArgse{//ItemCreated事件在DataGrid控件中创建项行时在服务器上发生//如果是DataGrid中的项,交替项或编辑项,则执行ife.Item.ItemTypeListItemType.Item||e.Item.ItemTypeListItemType.AlternatingItem||e.Item.ItemTypeListItemType.EditItem{//定义对“删除“单元格的控件的引用,此处的控件是LinkButton根据按钮类型决定,也可能是ButtonLinkButtonbtnDelLinkButtone.Item.Cells[0].Controls[0];//添加当单击按钮时,弹出的确认对话框的自定义属性btnDel.Attributes.Add“onclick“,“returnconfirm是否确定删除这条记录;“;btnDel.Text“删除“;}},DataGrid控件使用其它附加提示4,如何捕获并处理数据库连接、数据库操作执行过程中的异常,stringconstr“ProviderMicrosoft.Jet.OleDb.4.0;DataSource“Server.MapPath“mytest.mdb“;OleDbConnectionconnewOleDbConnectionconstr;stringsql“deletefromuserinfowhereuserid“userDataGrid.DataKeys[e.Item.ItemIndex];OleDbCommandnewOleDbCommandsql,con;//执行删除操作try{con.Open;.cuteNonQuery;}catchExceptionex{Response.Write“alert系统错误“ex.Message““}finally{con.Close;}MyBind;//调用MyBind子程序,ASP.net中DataGrid操作的其它典型错误1,分析可能的原因是对于,分析错误的可能原因是更新数据时,指定的列或控件位置与数据库实际情况不匹配。TextBoxname,pwd,prov,sex,intro,date;nameTextBoxe.Item.Cells[2].Controls[0];pwdTextBoxe.Item.Cells[3].Controls[0];。。。。。。,ASP.net中DataGrid操作的其它典型错误2,分析可能的错误原因是没有设置DataGrid的DataKeyField,在引用DataGrid1.DataKeys[e.Item.ItemIndex]之前要先填充数据源。解决方法很简单设置DataKeyField的属性,加上DataGrid1.DataKeyField“关键字段”,然后再做数据绑定。,,内容回顾,数据绑定ADO.NET技术使用ADO.NET对数据库进行基本操作使用DataGrid控件操作数据库,,,,中国银行业监督管理委员会承德监管分局计算机职业技能培训,本讲结束,承德石油高等专科学校计算机系课程,
展开阅读全文