数据库访问技术课件_第1页
数据库访问技术课件_第2页
数据库访问技术课件_第3页
数据库访问技术课件_第4页
数据库访问技术课件_第5页
已阅读5页,还剩185页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库访问技术数据库访问技术数据库访问技术知识点理解数据绑定技术掌握使用DataSet对象熟悉ADO.NET数据库操作方法掌握DataGrid等数据显示控件的方法和技巧2数据库访问技术数据库访问技术数据库访问技术知识点理解数据绑1知识点

理解数据绑定技术掌握使用DataSet对象熟悉ADO.NET数据库操作方法掌握DataGrid等数据显示控件的方法和技巧2知识点理解数据绑定技术26.1数据库操作概述

数据访问其实就是在应用程序中获取数据库或者其他存储设备上的数据,并且可以对数据库或者其他存储设备上的数据进行基本的数据操作,包括查询数据、添加数据、修改数据、删除数据等。36.1数据库操作概述数据访问其实就是在应用程序中获取数据库数据库访问模型图4数据库访问模型图46.1数据库操作概述数据访问不单指访问数据库中的数据,它还包括访问其他格式的数据,.NET(请确认?)提供System.Data命名空间,该命名空间提供了访问数据库中数据的类和对象。System.Data命名空间主要由ADO.NET结构的类组成,该类提供使开发者能够生成有效地管理来自多个数据源的数据的组件。ADO.NET设计思想是从数据库中读取数据到内存中,构成内存中的一个数据库,

56.1数据库操作概述数据访问不单指访问数据库中的数据,它还包666.1数据库操作概述ADO.NET1.0版本主要提供两种数据提供程序,分别是SQLServer.NET和OLEDB.NET数据提供程序。而ADO.NET1.1提供4种数据提供程序,除了1.0提供的两种之外,还包括OracleDB.NET数据提供程序和ODBC.NET数据提供程序。数据提供程序访问对象SQLServer.NET主要访问SQLServer2000及以上版本OLEDB.NET主要访问SQLServer7.0及以下和其他数据库OracleDB.NET主要访问Oracle8i、Oracle9i及以上的版本ODBC.NET主要访问ODBC数据源76.1数据库操作概述ADO.NET1.0版本主要提供两种数对象属性Connection对象建立与特定数据源的连接Command对象对数据源执行命令,公开Parameters,并且可以从Connection在Transaction的范围内执行DataReader对象从数据源中读取只进且只读的数据流DataAdapter对象用数据源填充DataSet并解析更新,DataAdapter是数据提供程序与DataSet的接口.NET数据提供程序的核心对象8对象属性Connection对象建立与特定数据源的连接Com6.2结构化查询语句——SQL

SELECT查询SELECT查询是SQL语言的核心,在数据库应用中,查询是最常用的操作,同时还是数据库的其他操作的基础。

1、SELECT语法

SELECT[DISTINCT][别名.]字段名或表达式[AS列标题]FROMtable_source[WHEREsearch_condition][GROUPBYgroup_by_expression][ORDERBYorder_expression[ASC/DESC]]96.2结构化查询语句——SQLSELECT查询1、SELE6.2结构化查询语句——SQL常用聚合函数对表进行检索时,经常需要将结果进行汇总或计算。例如:统计总销售额,统计平均年龄等。聚合函数用于计算机表中数据,返回单个计算机结果。常用的聚合函数有:

AVG:求组中值的平均值。COUNT:求组中项数,返回int类型的整数。MAX:求最大值MIN:求最小值。SUM:返回表达式中所有值的和。VAR:返回给定表达式中所有值的统计方差例6-1106.2结构化查询语句——SQL常用聚合函数106.2结构化查询语句——SQL数据更新

插入数据语句(INSERT):INSERT语句主要用于向数据库的表或视图中插入一条新记录。语法为:INSERTINTO表名(字段列表)VALUES(字段值列表)116.2结构化查询语句——SQL数据更新116.2结构化查询语句——SQL删除数据语句(DELETE)

DELETE用来从一个或多个表中删除记录。语法为:DELETEFROM表名[WHERE删除条件]

126.2结构化查询语句——SQL删除数据语句(DELETE)6.2结构化查询语句——SQL更新数据语句(UPDATE)

UPDATE用于更新满足条件的某个记录的一个或多个字段。语法为:UPDATE表名SET字段名1=新字段值,[字段名1=新字段值…]WHERE更新条件

136.2结构化查询语句——SQL更新数据语句(UPDATE)6.3Connection对象

OLEDbConnection的使用

使用ADO.NET连接到OLEDB数据源上需要使用OLEDBConnection对象。建立一个Connection对象的代码是:OleDbConnectionmyconnection=newOleDbConnection(ConnectionString)

146.3Connection对象OLEDbConnectiOLEDbConnection的使用ConnectionString的主要属性Provider属性:数据源的程序提供者。例如:Access的提供者是Microsoft.Jet.OLEDB.4.0。DataSource属性:数据库的存放位置。UserID属性:数据库登录的用户名。Pwd属性:用来设置登录数据库的密码。ConnectionTimeout属性:获取在尝试建立连接时终止尝试并生成错误之前所等待的时间(以秒为单位),默认值为15秒。值为0表示没有对等待时间进行设置,而不是表示没有等待时间。Mode属性:在设定连接数据库前,连接的更改数据许可权(高级选项)15OLEDbConnection的使用ConnectionSt例如一个连接Access数据库的连接语句代码如下:Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\Database\1.mdb除了ConnectionString属性之外,OLEDbConnection还有open和close这两个常用方法,分别表示数据库的打开和关闭。以下是一个如何创建和打开与OLEDB数据源的连接:OleDbconnectionmyconn=newOledbconnection(“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\database\1.mdb”);Myconn.open();16例如一个连接Access数据库的连接语句代码如下:166.3Connection对象除了编写代码外,在VisualStudio.NET提供了可视化的操作数据库连接。(1)打开VisualStudio.NET,切换工具箱到“数据”选项卡,选择OLEDbConnection,并拖放到WebForm1窗体上,默认对象名字为OLEDbConnection1。(2)选中OLEDbConnection1,在其属性页上单击ConnectionString右边的空白,在空白处将出现一个下拉箭头,选择“<新建连接…>”出现“数据连接属性”对话框。176.3Connection对象除了编写代码外,在Visua18186.3Connection对象(3)默认情况下,数据连接显示的界面是SQL数据库连接,由于此处连接的是Access数据库,所以首先需要在“提供程序”选项卡中,选择MicrosoftJet4.0OLEDBProvider,这是Access使用的驱动程序(即ACCESS的Provider)(4)选择后单击“下一步”按钮(或直接切换到“连接”选项卡),在“选择或输入数据库名称”文本框中,选择需要连接的数据库位置和名称。默认用户名为Admin,密码为空,如果用其他用户名和密码登录,可以在“输入数据库登录信息”栏中输入用户名和密码。设置完毕后,可以单击右下部的“测试连接”测试数据库是否已经正确连接。196.3Connection对象(3)默认情况下,数据连接显2020连接好数据库后,可以在VisualStudio.NET里直接观看数据库中的内容。打开“服务资源管理器”(“视图”菜单中),双击连接的表,依次展开各个分支,可以显示表、视图、存储过程等

21连接好数据库后,可以在VisualStudio.NET里直22226.3Connection对象SqlConnection的使用SQLServer.NET数据提供程序使用SqlConnection对象提供了与MicrosoftSQLServer版本7.0或更高版本的连接。建立一个Connection连接的代码为:SqlConnectionconn=newSqlConnection(“DataSource=localhost;IntegratedSecurity=SSPI;;InitialCatalog=EXF_DB”);Conn.open();

236.3Connection对象SqlConnection的现在有两种方式可以连接到数据库:集成Windows的验证登录数据库:ConnectionString=”server=(local);database=EXF_DB;Trusted_Connection=yes”使用已知用户名和密码验证登录数据库,如上例:24现在有两种方式可以连接到数据库:246.3Connection对象SqlConnection类的属性和方法SqlConnection类常见属性

ConnectionString属性:设置连接的SQL服务器。前面已经多次用到和讲解。ConnectionTimeout属性:如果第一次不能连接,SqlConnection会尝试再次进行连接,为了防止一直在连接的操作,ConnectionTimeout属性就是用来限制连接的时间,超出该时间则提示连接错误,其默认值为15秒。PacketSize属性:该属性设置SQLServer通信时网络包的大小。State属性:获取当前数据库连接的状态。256.3Connection对象SqlConnection类6.3Connection对象SqlConnection类的属性和方法SqlConnection类常见方法

Open:使用ConnectionString所指定的属性打开数据库连接,这是数据库操作的第一步。Close:关闭与数据库的连接,这是关闭任何打开连接的首选方法。每次用完Connection后都必须将其关闭,可以使用close或dispose方法实现。Dispose:释放由Component占用的资源。266.3Connection对象SqlConnection类6.4在ASP.NET中存取数据

Command对象

SqlCommand常用属性和方法CommandText属性:用于设置SqlCommand执行的SQL语句,可以是任何合法的SQL语句(包括INSERT、UPDATE、SELECT等)。除了可以执行SQL语句外,当CommandType设置为存储过程时,CommandText的值就是存储过程的名称。CommandType属性:用于设置SqlCommand如何解析CommandText的值。它的值是枚举型,可以是SQL文本、存储过程或表。将CommandType赋值时要利用枚举赋值。如将CommandType赋值为存储过程的代码为:Mycommand.CommandType=CommandType.StoreProcedure;

276.4在ASP.NET中存取数据Command对象276.4在ASP.NET中存取数据

Command对象

SqlCommand常用属性和方法Connection属性:用于连接数据库SqlConnection对象的值。当使用SqlConnection连接数据库时只是对西说明了已经连接了数据库,但当用SqlCommand执行时还需要用Connection属性指定到底是连接了哪一个数据库。CommandTimeout属性:用于设置从第一次执行命令开始,需要执行多久才停止。默认值为30秒。Parameters属性:在执行SQL语句中需要的参数设置

286.4在ASP.NET中存取数据Command对象28成员名说明TextSQL文本命令,默认值。CommandText设置为SQL语句StoredProcedure存储过程。CommandText设置为存储过程的名称TableDirect表。CommandText设置为表的名称CommandType取值范围和意义29成员名说明TextSQL文本命令,默认值。CommandTeCommand对象常见的构造函数和方法

SqlCommand构造函数是初始化SqlCommand对象,它有3种方法重载。也就是有3种方法可以定义Command对象。PublicSqlCommand(stringcmd,SqlConnectionconn);用cmd初始化CommandText的值,用conn初始化Connection的属性值。PublicSqlCommand(string);用string字符串的内容初始化CommandText的值,而Connection的属性值为空。PublicSqlCommand();初始化CommandText的值和初始化CommandText的值都为空。30Command对象常见的构造函数和方法30比较如下的三种代码,可以看出它们执行的功能都是相同的。Stringmycmd=”SELECT*FROMgoods”;Stringmyconn=”integratedsecurity=SSPI;datasource=(local);initialcatalog=SPXS”;//方法一:SqlCommandsqlcmd=newSqlCommand(mycmd,newSqlConnection(myconn));//方法二:SqlCommandsqlcmd=newSqlCommand(mycmd);SqlConnectionsqlconn=newSqlConnection(myconn);Sqlcmd.Connection=sqlconn;//方法三:SqlCommandsqlcmd=newSqlCommand();SqlConnectionsqlconn=newSqlConnection(myconn);sqlcmd.CommandText=sqlcmd;sqlcmd.Connection=sqlconn;31比较如下的三种代码,可以看出它们执行的功能都是相同的。31还有一种更常用的表示方法为:Stringmycmd=”SELECT*FROMgoods”;Stringmyconn=”integratedsecurity=SSPI;datasource=localhost;initialcatalog=SPXS”;SqlConnectionsqlconn=newSqlConnection(myconn);SqlCommandsqlcmd=newSqlCommand(mycmd,myconn);

32还有一种更常用的表示方法为:32Command对象在VS.NET的环境中可视化地生成SQL语句。

(1)按照6.3.2节中的步骤建立一个sqlconnection1对象,连接SQLServer服务器中名为SPXS的数据库。(2)在“数据”工具箱中找到SqlCommand控件,并把它拖放到窗体上,此时可以在窗体下部看到名为sqlCommand1的SqlCommand控件。(3)在sqlcommand控件的“属性”中有一个Connection属性,如图6-10所示,该属性可以设置SQL具体执行哪个数据库。选择“现有数据库”中sqlconnection1。如果没有第一步,也可以在这里“新建”建立一个新的连接。(4)在CommandText中,把光标定位在CommandText上时,在右边文本控件中出现一个“…”按钮,单击它将出现“查询生成器”窗口,同时还弹出“添加表”对话框,如图6-11所示。在“添加表”对话框“表”选项卡中列出了SQL数据库中可用的表,在“视图”和“函数”选项卡中列出了可用的视图或者函数。(5)选中某个表,单击“添加”按钮,可以添加到查询生成器中,同时可以完成SQL语句的制定。33Command对象在VS.NET的环境中可视化地生成SQL语3434Command对象SqlCommand的方法:主要是执行SQL语句ExecuteReader()方法

例6-2执行CommandText指定的SQL语句或存储过程名,将执行结果返回到SqlDataReader对象的数据集中。它的声明方式是:PublicSqlDataReaderExecuteReader();以下是常见的使用模式:SqlConnectionmyconn=newSqlconnection(myConnstring);SqlCommandmycommand=newSqlCommand(SQL,myconn);Myconn.Open();SqlDataReadermyReader=myCommand.ExecuteReader(CommandBehavior.CloseConn);35Command对象SqlCommand的方法:主要是执行SQCommand对象ExecuteNonQuery()方法

该方法主要执行UPDATE、INSERT或DELETE这样的SQL语句,对于UPDATE、INSERT和DELETE语句,对数据库中的数据进行修改,返回值为该命令所影响的行数。对于SELECT语句,返回值为-1。如果发生回滚,返回值也为-1。36Command对象ExecuteNonQuery()方法3Command对象ExecuteScalar()方法该方法主要返回结果集中第一行的第一列,由于它只能返回一个值,通常可以利用它来获取聚合值。例如:购物中共消费的金额,共购买的商品总数,购买者的平均年龄等。

37Command对象ExecuteScalar()方法37Command对象ExecuteXmlReader()方法该方法返回XmlReader对象,它的使用取决于SQL语句的编写。当然,有的时候需要直接使用数据命令对数据集执行命令,或执行的SQL语句中的元素是从客户端中的表中获取,这样执行SQL语句或存储过程常常需要带参数。例如,需要参数的简单“更新(UPDATE)”语句可为:UPDATEsalesSETAmount=@amount,Salestime=@timeWHERE(salesID=@id)38Command对象ExecuteXmlReader()方法3Command对象Parameters参数集合

(例6-3)在上段代码中,@amount,@time,@id都是命名参数。在执行语句时,必须为这些参数提供值。这些参数都是通过设置参数对象来实现的。数据命令支持Parameters集合,它包含OleDbParameter类或SqlParameter类对象。对于需要传递的每个参数,集合均有一个对应的参数对象。39Command对象Parameters参数集合(例6-3)Command对象Parameters参数集合

Parameter对象可以使用Parameter构造函数来创建,或通过调用Command的Parameters集合的Add方法来创建。SqlParameter类对象的属性有以下一些:

ParameterName属性:该属性设置或获取SqlParameter参数名。DbType属性:定义SQL参数的类型,其取值为SqlDbType枚举值。Value属性:用来设置或取得SqlParameter的参数值。Direction属性:获取或设置一个值,该值指示参数是只可输入、只可输出、双向还是存储过程返回值等。取值范围是ParameterDirection枚举类型。如表6-8所示,列出了枚举值及说明。40Command对象Parameters参数集合40枚举名称说明Input参数是输入参数InputOutput参数既能输入、也能输出Output参数是输出参数ReturnValue参数表示诸如存储过程、内置函数或用户定义函数之类的操作的返回ParameterDirection枚举值及说明41枚举名称说明Input参数是输入参数InputOutput参Command对象datareader对象

数据库中的数据。一种是使用DataReader逐行地从数据源获得数据放进缓冲区并进行处理;二是使用DataSet对象来将数据放到内存中进行处理。使用DataReader对象来显示数据,从数据库中检索只读/只进的数据流,当使用Command对象的ExecuteReader方法时,返回的就是DataReader类型,查询结果在查询执行时返回,并存储在客户端的网络缓冲区中,直到使用DataReader的Read方法对它们发出请求。这种方法一次只在内存中存储一行,从而降低了系统开销。DataReader和数据源类型紧密连接,所以它对应也有两种类型——OleDbDataReader类和SqlDataReader类。42Command对象datareader对象42Command对象SqlDataReader的使用

定义一个SqlDataReader对象ProtectedSystem.Data.Sqlclient.SqlDataReadersqlDataReader1创建SqlCommand对象实例后,可以调用Command.ExecuteReader方法从数据源中检索行,然后把值赋给sqlDataReader1。sqlDataReader1=sqlCommand1.ExecuteReader();43Command对象SqlDataReader的使用43Command对象SqlDataReader的使用

随后调用sqlDataReader1的Read方法从查询的结果中获取行。Read方法用于获取一行数据记录,并将隐含的指针向后移一步。Read方法返回一个布尔值,可以通过这个值判断是否是结果集的最后一条记录。通常需要while语句来循环读取。基本模式是:

While(sqlDataReader1.Read()){….}44Command对象SqlDataReader的使用44Command对象SqlDataReader主要属性和方法FiledCount属性:显示当前操作记录的字段总和。IsClosed属性:判断DataReader对象是否已经关闭。Close方法:关闭DataReader对象。GetString方法:以String类型返回指定列中值。GetValue方法:以自身的类型返回指定列中值。GetValues方法:返回当前记录所有字段集合。Read方法:将“光标”指向DataReader对象的下一个记录。RecordsAffected方法:表示已经更改、插入或删除的行数,如果没有任何行受影响则返回0,-1表示SELECT语句。

45Command对象SqlDataReader主要属性和方法4Get方法适用数据类型GetInt16/GetInt32/GetInt64对应于shot/int/longGetDouble/GetFloat/GetDecimal对应于double/float/decimalGetDateTimeDataTime对象GetString对应VarcharGetBooleanBoolean常见的Get方法SQL数据类型定义的对照表

在建立数据库时需要定义每一列的数据类型,同样SqlDataReader提供了多个Get方法读取相应的类型。(例对比例6-3)46Get方法适用数据类型GetInt16/GetInt32/G6.4DataSetDataSet是数据的一种内存驻留表示形式,无论它包含的数据来自什么数据源,它都会提供一致的关系编程模型。一个DataSet表示整个数据集,其中包含对数据进行包含、排序和约束的表以及表间的关系。DataSet在处理数据时,采用了新的分层机制,一方面,它把数据库中的数据通过DataAdapter对象放到内存中,另一方面,它允许浏览器通过DataGrid等控件读取其中的数据进行显示。正是这种分离设计思维,使得DataSet在数据处理中的地位非常重要。

476.4DataSetDataSet是数据的一种内存驻留表示使用DataSet的方法有若干种,这些方法可以单独应用,也可以结合使用。例如:在DataSet中以编程形式创建DataTables、DataRelations和Constraints并使用数据填充这些表。通过DataAdapter用现在关系数据源中的数据表填充DataSet

6.4DataSet48使用DataSet的方法有若干种,这些方法可以单独应用,也可6.4DataSet使用DataSet

Dataset属性:属性说明CaseSensitive设定DataTable对象中的字符串比较是否区分大小写Container获取组件的容器DataSetName获取或设置当前DataSet的名称Relations获取用于将表链接起来并允许从父表浏览到子表的关系的集合Tables获取包含在DataSet中的表的集合496.4DataSet使用DataSet属性说明CaseS使用DataSetTable属性属性说明ChildRelations获取此DataTables的子关系的集合Columns获取属于该表的列的集合Constraints获取由该表维护的约束的集合DataSet获取该表所属的DataSetPrimaryKey获取或设置充当数据表主键的列的数组Rows获取属于该表的行的集合TableName获取或设置DataTable的名称50使用DataSetTable属性属性说明ChildRelat使用DataSetDataSet常用方法方法属性Clear移除所有表中的行来清除任何数据的DataSetCopy复制该DataSet的数据和结构GetXml返回存储在DataSet中的数据的XML表示形式Reset将DataSet重置为初始状态WriteXml从DataSet写XML数据,还可以选择写架构以编程形式创建DataTable,必须先通过将DataColumn对象添加到DataColumnCollection中定义其架构;若要向DataTable中添加行,必须先使用NewRow方法返回新的DataRow对象。DataTable可存储的最大行数是16777216。51使用DataSetDataSet常用方法方法属性Clear移使用DataSet数据列DataColumn:DataColumn表示DataTable中列的架构,通过向DataColumnCollection中添加一个或多个DataColumn对象来生成这个架构。

AllowDBNull:指示对于属于该表的行,此列中是否允许空值。Caption:列的标题。ColumnName:获取或设置DataColumnCollection中的列的名称。DataType:该列的类型。DefaultValue:该列默认值。MaxLength:该列的最大长度。ReadOnly:是否只读。Table:该列所属DataTable。Unique:每一行中的值是否必须惟一。52使用DataSet数据列DataColumn:DataCol使用DataSetDataColumn的集合是DataColumnCollection类,DataColumnCollection类提供了对列进行一般的操作,DataColumnCollection类的常见的属性和方法有

Count:获取集合中元素的总数。IsReadOnly:指示列是否为只读。Item:从集合中获取指定的DataColumn。Add()方法:接受可选的ColumnName、DataType和Expression参数,创建DataColumn对象并将其添加到DataColumnCollection中。Clear()方法:消除集合中的所有列IndexOff()方法:获取按名称指定的列的索引。

53使用DataSetDataColumn的集合是DataCol以下代码完成在DataTable表sales中加入三列的操作:DataTabletable=newDataTable(“sales”);DataColumncol=table.Column.Add(“salesID”,typeof(String));col.AllowDBNull=false;col.Unique=true;table.Columns.Add(“Code”,typeof(String));table.Columns.Add(“Name”,typeof(String));54以下代码完成在DataTable表sales中加入三列的操作使用DataSet数据行DataRow

:DataRow表示DataTable中的一行数据。使用DataRow对象定义的属性和方法用于行的插入、删除和更新DataTable中的值。常用属性:Item:获取或设置存储在指定列中的数据ItemArray:获取或设置在指定行中的数据。RowState:获取该行与DataRowCollection关系相关的当前状态。Table:获取该行拥有其架构的DataTable。Delete()方法:删除DataRow。GetChildRows()方法:获取DataRow的子行。IsNull()方法:指定列是否包含空值。

55使用DataSet数据行DataRow:DataRow表示使用DataSetDataRowCollection类常见的属性和方法

AcceptChanges()方法:提交自上次调用AcceptChanges以来对该行进行的所有更改。Count:获取集合中的元素的总数。IsReadOnly:指示列是否为只读。Item:从集合中获取指定的DataColumn。Add()方法:将DataRow对象添加到DataRowCollection中。Clear()方法:消除所有行的集合。Find:获取指定的DataRow。Remove:从集合中移除指定的DataRow。56使用DataSetDataRowCollection类常见的使用DataSet创建一个新的DataRow:使用DataTable对象的NewRow方法创建新的DataRow之后,使用Add方法将新的DataRow添加到DataRowCollection中。最后,调用DataTable对象的AcceptChanges方法确认是否已添加。57使用DataSet创建一个新的DataRow:使用Data以下代码是将5行数据添加到DataTable对象中。DataTabletable1=newtable();…//省略定义表的架构的代码DataRowrow1;For(inti=0;i<=4;i++){row1=table1.NewRow();row1[0]=i;row1[1]=”salesID”+i.ToString();table1.row.Add(row1);}

例6-458以下代码是将5行数据添加到DataTable对象中。586.4DataSet表间关系DataRelation

(例6-5)一个数据集可以包含多个表,包括相互之间存在关系的表(即有公共键字段的表)。要表现这些表之间的关系可以使用DataRelation对象。DataRelation对象可以执行以下几种(请确认是两种还是三种?)功能:可以使的与正使用的记录有相关关系的记录可用(语意不明)。如果在父记录中,它提供子记录;如果使用子记录,它提供父记录。可强制约束的引用完整性。如果数据集中的表有逻辑关系,则DataRelation对象可使另一个表中相关的记录供开发者使用。

596.4DataSet表间关系DataRelation(例6.4DataSet使用数据适配器填充DataSet填充DataSet的方法还有一种是使用DataAdapter对象。该对象可以提供从数据源填充数据集和从数据集更新数据源的操作。

606.4DataSet使用数据适配器填充DataSet60使用数据适配器填充DataSet填充数据集

当DataSet是表的集合,在DataAdapter类中提供了一个重要的属性SelectCommand和一个重要的方法Fill来完成数据源到DataSet的填充。SelectCommand从数据源中检索数据,Fill方法使用DataAdapter的SelectCommand属性的结果来填充DataSet。Fill将要填充的数据放到DataSet对象中的DataTable表中。

61使用数据适配器填充DataSet填充数据集61使用数据适配器填充DataSet定义sqlDataAdapter(例)PublicSqlDataAdapter();PublicSqlDataAdapter(SqlCommand);PublicSqlDataAdapter(string,SqlConnection);PublicSqlDataAdapter(string,string);

62使用数据适配器填充DataSet定义sqlDataAdapt使用数据适配器填充DataSet定义了DataAdapter对象后,定义一个DataSet对象。代码如下:DataSetds=newDataSet();SvqlCommandcmd=newSqlCommand(“SELECT*FROMgoods”);DataAdapter1.SelectCommand=cmd;DataAdapter.Fill(ds);在这段代码中,执行DataAdapter的Fill(ds)语句后,DataAdapter就把goods表中的所有数据填充到数据集ds的第一张表中,按默认方式,系统将第一张表命名为Table0,将第二张表命名为Table1,依次类推。也可以在填充给ds中的表起一个别名,例如:DataAdapter1.Fill(ds,”cmd1”);63使用数据适配器填充DataSet定义了DataAdapter使用数据适配器填充DataSet填充数据集

当DataSet数据集的表内容更改后应怎样返回给SQL等数据库呢?DataAdapter提供了InsertCommand、UpdateCommand和DeleteCommand以及一个Update方法来完成从数据集到数据库的更新工作。

Update方法与Fill方法相似,Update方法以DataSet对象和可选的DataTable对象或DataTable的表名为参数,将DataSet内部的数据集更新以DataTable表名命名的数据库。例如:DataAdapter1.Update(ds,”cmd1”);64使用数据适配器填充DataSet填充数据集64使用数据适配器填充DataSet数据的访问(例6-6)使用DataAdapter填充数据集后,DataSet将以DataTable的格式存放数据,可以利用前面介绍的DataTable类的特点访问数据。另一种方法,可以使用显示控件将数据进行绑定显示。

65使用数据适配器填充DataSet数据的访问(例6-6)65使用数据适配器填充DataSetDataview类

DataView类提供了对DataTable的不同视图。所谓视图就是“虚表”,它允许以不同的角度显示数据。一张表,按不同人的要求可以创建多个视图。Dataview的属性Count:获取DataView中记录的数量。Item:从指定的表获取一行数据。RowFilter:获取或设置用于筛选在DataView中查看哪些行的表达式。Sort:DataView的一个或多个排序列以及排序顺序。Table:获取或设置源DataTable。AddNew():添加新行到DataView中。66使用数据适配器填充DataSetDataview类666.6数据绑定控件——Repeater服务器控件

Repeater服务器控件概述(例6-7)Repeater控件是一个基本模板数据显示控件,它允许通过为列表中显示的每一项重复使用指定的模板来自定义布局,需要注意的是,该控件不能通过可视化编辑模板,没有内置的布局或样式,所以该控件只能通过编程的方式显式所有HTML布局、样式和设置等。676.6数据绑定控件——Repeater服务器控件Repe模板名称说明ItemTemplate定义列表中项目的内容和布局。此模板为必选模板AlternatingItemTemplate若定义该模板,则它可以决定从0开始的奇数索引项的内容和布局;若没有定义该模板,则都使用ItemTemplate来觉得项目的内容和布局SeparatorTemplate若定义该模板,则可以设计项与项之间的内容;若未定义,则不呈现分隔符HeaderTemplate若定义该模板,则可以决定列表标头的内容和布局;若没有定义,则不呈现标头FooterTemplate若定义该模板,则可以决定列表注脚的内容和布局;若没有定义,则不呈现注脚Repeater模板的列表68模板名称说明ItemTemplate定义列表中项目的内容和布6.6数据绑定控件——Repeater服务器控件

Repeater服务器控件实例(例6-8)Repeater控件没有内置的选择和编辑支持,用户可以通过OnItemCommand事件处理从模板引发到该控件的事件。

696.6数据绑定控件——Repeater服务器控件Repe6.7数据绑定控件2——DataList服务器控件

DataList服务器控件概述DataList控件可以看作是Repeater的增强版,它也是通过模板来操作数据的,但模板类型增加了许多。706.7数据绑定控件2——DataList服务器控件Data模板说明ItemTemplate为数据源中的每行呈现一次HTML元素和控件AlternatingItemTemplate与Repeater中的该模板相同,主要用于创建不同的外观SelectedItemTemplate当用户选择DataList控件中的项时呈现的元素。比如使用背景色标记该行,展开其他字段等EditItemTemplate当项处于编辑模式时的布局,通常包括编辑控件,如TextBox控件HeaderTemplate和FooterTemplate在列表开始和结束处呈现文本或控件SeparatorTemplate与Repeater控件的该模板用法相同,呈现每项之间的元素,如<hr>等DataList的模板类型71模板说明ItemTemplate为数据源中的每行呈现一次HT事件说明OnItemCommand单击DataList控件中的Button、ImageButton或LinkButton等按钮控件时触发的事件,该事件参数为DataListCommandEentArgs,可取值为:1)CommandArgument:获取按钮控件指定的选择参数;2)CommandName:获取按钮控件指定的命令名;3)CommandSource:获取被单击的按钮对象;4)Item:获取按钮对象所在数据行,返回DataListItem对象OnCancelCommand单击控件中的“取消“按钮时触发事件,参数与OnItemCommand相同OnEditCommand单击控件中的“编辑“按钮时触发该事件,参数与OnItemCommand相同OnDeleteCommand单击控件中的“删除“按钮时触发该事件,参数与OnItemCommand相同OnUpdateCommand单击控件中的“更新“按钮时触发该事件,参数与OnItemCommand相同DataList常用事件72事件说明OnItemCommand单击DataList控件中6.7数据绑定控件——DataList控件服务器控件

DataList控件实例(例6-9)736.7数据绑定控件——DataList控件服务器控件Da6.8数据绑定控件3——DataGrid服务器控件

DataGrid服务器控件概述

DataGrid控件是一个功能强大的数据显示和处理控件,也是使用频率最高的一种数据显示控件。它将数据源中的数据以表格(Table)形式显示出来,其每一行用于显示数据源中的一条记录。默认情况下,DataGrid以只读模式显示数据,但DataGrid也能够在运行时自动在可编辑控件中显示数据。DataGrid不但可以灵活地控制数据的显示格式,包括设置表格的显示特性、显示和隐藏列等,还可以对数据进行编辑,与其他数据显示控件不同的是,它还可以提供数据排序和分页显示的功能。

746.8数据绑定控件3——DataGrid服务器控件Data6.8数据绑定控件3——DataGrid服务器控件

数据的基本显示(例)在DataGrid中所使用的数据源一般是DataSet数据集中的表。对于DataGrid的数据显示,可以通过代码定义数据源,也可以通过可视化操作,来完成数据源的连接。在代码设计中,首先利用DataSource属性设置数据源,其次,利用DataBind()方法进行数据的绑定。需要注意的是绑定的对象是DataSet数据集中的某一个表,而不是整个数据集。

756.8数据绑定控件3——DataGrid服务器控件数据的基6.8数据绑定控件3——DataGrid服务器控件

DataGrid服务器控件概述

DataGrid控件是一个功能强大的数据显示和处理控件,也是使用频率最高的一种数据显示控件。它将数据源中的数据以表格(Table)形式显示出来,其每一行用于显示数据源中的一条记录。默认情况下,DataGrid以只读模式显示数据,但DataGrid也能够在运行时自动在可编辑控件中显示数据。DataGrid不但可以灵活地控制数据的显示格式,包括设置表格的显示特性、显示和隐藏列等,还可以对数据进行编辑,与其他数据显示控件不同的是,它还可以提供数据排序和分页显示的功能。

766.8数据绑定控件3——DataGrid服务器控件Data6.8数据绑定控件3——DataGrid服务器控件

DataGrid服务器控件概述

数据源的连接也可以通过可视化界面来进行操作,如果已经通过可视化操作建立了Connection对象和DataAdapter对象,单击可视化界面的“生成数据集”,在工具箱中选中“DataGrid”控件,在属性窗口中,选中“属性生成器”,在属性生成器中进行数据源的设定,在程序代码中只需要引用DataBind()方法即可完成数据的绑定。

776.8数据绑定控件3——DataGrid服务器控件Data787879796.8数据绑定控件3——DataGrid服务器控件

DataGrid服务器控件概述

数据源的连接也可以通过可视化界面来进行操作,如果已经通过可视化操作建立了Connection对象和DataAdapter对象,单击可视化界面的“生成数据集”,在工具箱中选中“DataGrid”控件,在属性窗口中,选中“属性生成器”,在属性生成器中进行数据源的设定,在程序代码中只需要引用DataBind()方法即可完成数据的绑定。

806.8数据绑定控件3——DataGrid服务器控件Data6.8数据绑定控件3——DataGrid服务器控件

DataGrid服务器控件概述

在DataGrid中,DataGrid的显示可以有多种不同的模式,可以通过选择“自动套用格式“进行DataGrid样式的选择。816.8数据绑定控件3——DataGrid服务器控件DatDataGrid服务器控件

列绑定

DataGrid控件有个AutoGenerateColumns属性,该属性用来设定DataGrid控件是否可以自动产生列,默认值为true,但在更多情况下,DataGrid并不需要将DataSet表中的所有字段全部显示出来,这时,就可以将AutoGenerateColumns属性设置为False,默认情况下,系统将不会自动的产生列,由用户自定义需要显示的列,同样,在某些条件下,有可能还要显示在数据集中没有的列(比如:编辑,删除等)这也需要用户自定义列名,这就需要用到DataGrid中的列绑定。82DataGrid服务器控件列绑定82列名称说明BoundColumn绑定列,控制列的显示顺序和呈现方式HyperLinkColumn超链接列,给出HyperLink控件中的绑定数据ButtonColumn按钮列,将用户命令从行中表现在网页中的事件处理程序TemplateColumn模板列,控制在列中呈现哪些控件EditCommandColumn编辑按钮列,显示“编辑“、”更新“、“取消”链接以响应控件中EditItemIndex属性的更改DataGrid列绑定83列名称说明BoundColumn绑定列,控制列的显示顺序和呈6.8数据绑定控件3——DataGrid服务器控件

DataGrid服务器控件概述

数据源的连接也可以通过可视化界面来进行操作,如果已经通过可视化操作建立了Connection对象和DataAdapter对象,单击可视化界面的“生成数据集”,在工具箱中选中“DataGrid”控件,在属性窗口中,选中“属性生成器”,在属性生成器中进行数据源的设定,在程序代码中只需要引用DataBind()方法即可完成数据的绑定。

846.8数据绑定控件3——DataGrid服务器控件DataDataGrid服务器控件

绑定列(BoundColumn)

绑定列是最常见也是最简单的一种列类型,DataGrid自动产生的列类型就是BoundColumn,绑定列显示的样式是最基本的文本格式。绑定列的基本格式为

<asp:DataGridid=”DataGrid1”runat=”server”AutoGenerateColumns=”false”…><Columns><asp:BoundColumnHeaderText=”ID号”DataField=”ID”/><asp:BoundColumnHeaderText=”姓名”DataField=”Name”/></Columns></asp:DataGrid>85DataGrid服务器控件绑定列(BoundColumn)DataGrid服务器控件

超链接列(HyperLinkColumn)(例)超链接列就是允许设置一列为超链接,通过它建立超链接与数据源之间的联系,但在实际运用中需要灵活运用。一般的超链接列的基本格式如下:<asp:DataGridid=”DataGrid1”runat=”server”AutoGenerateColumns=”false”…><Columns><asp:HyperLinkColumnHeaderText=“绑定的字段名”DataTextField=”链接数据源字段”DataNavigateUrlField=”链接地址有关的数据源字段”DataNavigateUrlFormatString=”链接字符串格式”NavigateUrl=”链接地址”Text=”链接文本”></asp:HyperLinkColumn></Columns></asp:DataGrid>86DataGrid服务器控件超链接列(HyperLinkCoDataGrid服务器控件

按钮列(ButtonColumn)可以像Button类控件一样支持事件的处理。当点击按钮后时会触发OnItemCommand事件,基本格式如下:<asp:DataGridid=”DataGrid1”runat=”server”AutoGenerateColumns=”false”OnItemCommand=”BoundCommand”><Columns><asp:ButtonColumnHeaderText=”列头”Text=“文本“CommandName=”按钮名称”ButtonType=”LinkButton/PushButton”/></Columns></asp:DataGrid>

87DataGrid服务器控件按钮列(ButtonColumnDataGrid服务器控件

按钮列(ButtonColumn)其中,ButtonType是设置Button的样式,组要有按钮类型(PushButton)和链接类型(LinkButton)两种。CommandName是设置Button名称,当DataGrid有多个按钮列时,使用这个来区分每一列按钮。OnItemCommand设置单击按钮的处理代码(与Repeater和DalaList的用法相同),处理代码的格式一般为:VoidBoundCommand(Objectsender,DataGridCommandEventArgse){...}88DataGrid服务器控件按钮列(ButtonColumnDataGrid服务器控件

模板列(TemplateColumn)

在模板列中可以随意添加各种控件,还可以随意控制控件的布局,它的ItemTemplate为正常模式的显示,EditItemTemplate为编辑模式下的显示。模板列的基本使用模式如下:<asp:DataGridid=”DataGrid1”runat=”server”AutoGenerateColumns=”false”><Columns><asp:TemplateColumn><ItemTemplate></ItemTemplate><EditItemTemplate></EditItemTemplate></asp:TemplateColumn> ..</Columns></asp:DataGrid>

89DataGrid服务器控件模板列(TemplateColuDataGrid服务器控件

编辑列(EditCommandColumn)

使用该列,可以对数据进行编辑,首先使用EditItemIndex属性,该属性指示哪一行应该是可编辑的。设置该属性后,DataGird按该索引(从零开始)将行呈现为文本输入框,而不是简单的标签。默认值为-1表示没有行是可编辑的。当确定哪行编辑后,EditCommandColumn列产生3个特殊事件:EditCommand、UpdateCommand、CancelCommand。

综合例例6-1090DataGrid服务器控件编辑列(EditCommandC6.8数据绑定控件3——DataGrid服务器控件

排序(例)当DataGrid的AllowSorting属性设置为true时,它呈现将Sort命令激发回表中列标头的超链接。将DataGrid的OnSortCommand属性设置为当用户单击列链接时要调用的处理程序。列的名称作为DataGridSortCommandEventArgs参数中的SortExpression属性传递。该参数可用来设置绑定到DataView的Sort属性。

916.8数据绑定控件3——DataGrid服务器控件排序(例例如,要对sales表中所有数据的显示,当单击每列的列头标题时,都可以按照按标题进行排序。在构造DataGrid时需要将AllowingPage设置为true,DataGird的描述为:<asp:DataGridid="DataGrid1"style="Z-INDEX:101;LEFT:80px;POSITION:absolute;TOP:56px"runat="server"Width="320px"Height="216px"AllowSorting="True"OnSortCommand="mygridsort"BorderColor="#999999"BorderStyle="None"BorderWidth="1px"BackColor="White"CellPadding="3"GridLines="Vertical"> </asp:DataGrid>在这段描述中,DataGrid默认了自动生成列,并设定了排序事件名为“mygridsort”。当点击某一列时,通过e.SortExpression获取单击列的字段名,并将其作为参数设置给Source对象的Sort属性

92例如,要对sales表中所有数据的显示,当单击每列的列头标题6.8数据绑定控件3——DataGrid服务器控件

分页(例)在其他许多Web动态技术中,要实现分页的显示是件很头痛的事情,DataGrid控件内建了自动分页的功能,通过将AllowingPaging的属性设置为true,同时设置OnPageIndexChanged事件处理程序即可完成分页。当启动分页功能时,页面浏览按钮显示成“下一页/上一页”按钮或数字按钮。这个设置可以在窗体设计代码中完成,也可以通过可视化操作完成。单击某个页面浏览按钮时,将引发PageIndexChanged事件。用户可以应用自己的代码处理此事件。最基本的逻辑是将CurrentPageIndex分配给事件参数的NewPageIndex属性,然后重新绑定数据源。936.8数据绑定控件3——DataGrid服务器控件分页(例6.9实战检验

理论巩固请说明数据库的交互中主要有哪两大类方法。什么是数据集?它的特点是什么?DataReader对象的特点是什么?三种常用的数据显示控件是什么?它们各自的特点有哪些?理论巩固利用本章所学内容完成一个简单的留言板,功能包括:用户注册。登录后可以浏览所有留言。可以发表新留言。留言板的管理(对用户的添加和删除、对留言的删除和编辑等功能)。实现留言分页查看的功能。946.9实战检验理论巩固94汇报结束谢谢大家!请各位批评指正汇报结束谢谢大家!请各位批评指正95数据库访问技术数据库访问技术数据库访问技术知识点理解数据绑定技术掌握使用DataSet对象熟悉ADO.NET数据库操作方法掌握DataGrid等数据显示控件的方法和技巧2数据库访问技术数据库访问技术数据库访问技术知识点理解数据绑96知识点

理解数据绑定技术掌握使用DataSet对象熟悉ADO.NET数据库操作方法掌握DataGrid等数据显示控件的方法和技巧97知识点理解数据绑定技术26.1数据库操作概述

数据访问其实就是在应用程序中获取数据库或者其他存储设备上的数据,并且可以对数据库或者其他存储设备上的数据进行基本的数据操作,包括查询数据、添加数据、修改数据、删除数据等。986.1数据库操作概述数据访问其实就是在应用程序中获取数据库数据库访问模型图99数据库访问模型图46.1数据库操作概述数据访问不单指访问数据库中的数据,它还包括访问其他格式的数据,.NET(请确认?)提供System.Data命名空间,该命名空间提供了访问数据库中数据的类和对象。System.Data命名空间主要由ADO.NET结构的类组成,该类提供使开发者能够生成有效地管理来自多个数据源的数据的组件。ADO.NET设计思想是从数据库中读取数据到内存中,构成内存中的一个数据库,

1006.1数据库操作概述数据访问不单指访问数据库中的数据,它还包10166.1数据库操作概述ADO.NET1.0版本主要提供两种数据提供程序,分别是SQLServer.NET和OLEDB.NET数据提供程序。而ADO.NET1.1提供4种数据提供程序,除了1.0提供的两种之外,还包括OracleDB.NET数据提供程序和ODBC.NET数据提供程序。数据提供程序访问对象SQLServer.NET主要访问SQLServer2000及以上版本OLEDB.NET主要访问SQLServer7.0及以下和其他数据库OracleDB.NET主要访问Oracle8i、Oracle9i及以上的版本ODBC.NET主要访问ODBC数据源1026.1数据库操作概述ADO.NET1.0版本主要提供两种数对象属性Connection对象建立与特定数据源的连接Command对象对数据源执行命令,公开Parameters,并且可以从Connection在Transaction的范围内执行DataReader对象从数据源中读取只进且只读的数据流DataAdapter对象用数据源填充DataSet并解析更新,DataAdapter是数据提供程序与DataSet的接口.NET数据提供程序的核心对象103对象属性Connection对象建立与特定数据源的连接Com6.2结构化查询语句——SQL

SELECT查询SELECT查询是SQL语言的核心,在数据库应用中,查询是最常用的操作,同时还是数据库的其他操作的基础。

1、SELECT语法

SELECT[DISTINCT][别名.]字段名或表达式[AS列标题]FROMtable_source[WHEREsearch_condition][GROUPBYgroup_by_expression][ORDERBYorder_expression[ASC/DESC]]1046.2结构化查询语句——SQLSELECT查询1、SELE6.2结构化查询语句——SQL常用聚合函数对表进行检索时,经常需要将结果进行汇总或计算。例如:统计总销售额,统计平均年龄等。聚合函数用于计算机表中数据,返回单个计算机结果。常用的聚合函数有:

AVG:求组中值的平均值。COUNT:求组中项数,返回int类型的整数。MAX:求最大值MIN:求最小值。SUM:返回表达式中所有值的和。VAR:返回给定表达式中所有值的统计方差例6-11056.2结构化查询语句——SQL常用聚合函数106.2结构化查询语句——SQL数据更新

插入数据语句(INSERT):INSERT语句主要用于向数据库的表或视图中插入一条新记录。语法为:INSERTINTO表名(字段列表)VALUES(字段值列表)1066.2结构化查询语句——SQL数据更新116.2结构化查询语句——SQL删除数据语句(DELETE)

DELETE用来从一个或多个表中删除记录。语法为:DELETEFROM表名[WHERE删除条件]

1076.2结构化查询语句——SQL删除数据语句(DELETE)6.2结构化查询语句——SQL更新数据语句(UPDATE)

UPDATE用于更新满足条件的某个记录的一个或多个字段。语法为:UPDATE表名SET字段名1=新字段值,[字段名1=新字段值…]

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论