C#数据库操作 (修复的)_第1页
C#数据库操作 (修复的)_第2页
C#数据库操作 (修复的)_第3页
C#数据库操作 (修复的)_第4页
C#数据库操作 (修复的)_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、11.3 ADO.NET概念ADO.NET是由很多类组成的类库,这些类提供了许多对象,分别用来实现连接数据库,查询数据,插入数据,更新数据和删除数据等操作。ADO.NET提供了下面两种访问数据库的方法(1) 利用Connection,Command和DataReader对象访问数据库。这种方式只能从数据库读取数据,不能添加,修改和删除基类。如果只是进行查询,这种方式效率更高一些(2) 利用Connection,Command,DataAdapter和DataSet对象。这种方式比较灵活,不仅可以读取数据库进行查询操作。还可以进行添加,删除和修改等操作。另外,ADO.NET对象模型主要由两个基本

2、组件构成;一个是ADO.NET数据库提供程序,用于连接到数据库,执行命令和检查结果;另一个是数据集(DataSet),DataSet对象是支持ADO.NET的断开式,分布式数据方案的核心对象。1 .NET Data Provider.NET 数据提供者是指存取数据源的一组类库,主要是为了统一各类型数据源的存取方式而设计出一套高效类库。 在.NET Data Provider中包括了下表四个对象对象名称功能说明Connection提供和数据源的连接功能Command提供存取数据库命令,并执行传送数据或修改数据的命令,例如执行SQL命令,预存程序。DataAdapter担任DataSet对象和数据

3、源间的桥梁。DataAdapter使用四个Command对象执行查询,新增,修改,删除的SQL命令,把数据加载DataSet,或者把DataSet内的数据更新返回数据源。DataReader通过Command对象执行SQL查询命令取得数据流,以便进行高速,只读的数据浏览功能DataSet该对象可视为一个虚拟的数据源。在该对象中,存在着许多DataTable对象。DataTable对象可以看作一个内存中的Table,开发人员可以自定义Table中的栏目来在显示数据,也可以通过将不同数据源的数据存在不同DataTable对象的方式将这些数据整合在一起。11.4 ADO.NET对象不同的数据提供程序

4、会由于其所用的数据库技术不同而有不同的实现方式。它们提供了对底层数据源的访问,包括四个数据对象,其分别是Connection对象,Command对象,DataReader对象和DataAdapter对象。Connection对象用于连接到数据源。ADO.NET中包括OleDbConnection和SqlConnection等对象,前者用来连接基于OLE DB的数据库,后者专门用来连接SQL Server数据库。(1)使用SqlConnection对象连接到SQL Server数据库连接到数据库是访问数据库的第一步,可以使用下面的语句连接到SQL Server的pubs数据库String Con

5、nectionString=“server=(local);uid=sa;pwd=;database=pubs”;如果是Windows身份验证时;则连接字符串具有如下形式Data Source=(local);Initial Catalog=数据库名;Integrated Security=True;SqlConnection MyConnection=new SqlConnection(ConnectionString)其中,ConnectionString变量存储了访问数据库的各种信息,server用于指定运行SQL Server的服务器;uid和pwd分别指定登录到SQL Server服

6、务器的用户名和密码;database指定数据库名,MyConnection变量为SqlConnection类型的变量,代表了实际的连接对象(3) 使用OleDbConnection对象连接到OLE数据源进行数据库的连接需要使用连接字符串,连接OLE DB数据库(以Access数据库为例)的Connection对象的语句为Data Source=“文件路径及文件名”;如果数据库使用Access 2007版本编写的时候连接字符串改为String ConnectionString=“Provider=”;Data Source=“文件路径及文件名”;(1注意Data Source要分开写即中间要留有

7、空格OleDbConnection MyConnection=new OleDbConnection(ConnectionString)其中Provider提出了OLE DB数据库的驱动程序,DataSource提出Access数据库文件名的绝对路径。表17.3 SqlConnection连接字符串中的常用关键字名称默认值说明Data Source或Server或Address或Addr或NetworkAddress连接的SQL Server实例名称或网络地址Initial Catalog或Database要连接的数据库名称Integrated Security或Trusted_Connect

8、ionFalse当为false时,在连接时必须指定SQL Server登录账号和密码Password或PwdSQLServer登录账户密码Persist Security InfoFalse当该值设置为false或no时,如果要连接是打开的或者一直处于打开状态,那么安全信息将不会作为连接的一部分User IDSQL Server登录账户(4) OleDbConnection与SqlConnection对象常用的属性和方法表11.1 Connection对象的常用属性属性含义ConnectionString获取或设置用于打开SQL数据库的字符串ConnectionTimeOut获取终止尝试连接并

9、生成错误之前所等待的时间DataBase获取当前数据库或连接打开后要使用的数据库名称DataSource获取要连接SQL Server实例名称ServerVersion获取包含客户端要连接的SQL Server实例的版本字符串State获取或设置连接的当前状态SqlConnection类的State属性表述当前数据库连接状态;其值是一个ConnectionState枚举类型,ConnectionState枚举类型共包含6个值,表示6种数据库连接状态。(1) Closed:连接处于关闭状态;(2) Connecting:正在与数据源连接;(3) Open:连接处于打开状态;(4) Executi

10、ng:正在执行命令;(5) Fetching:长在检索数据;(6) Broken:连接中断;表11.2 Connection对象的常用方法方法含义Open打开数据库连接Close关闭与数据库的连接,这是关闭任何连接的首选方法ChangeDatabase为打开的SqlConnection更改当前数据库在创建Connection对象后,需要创建Command对象实现对数据库的操作,Command对象要与对应的连接方式匹配;对SqlConnection采用SqlCommand;对OleDbConnection则采用OleDbCommand(1) 创建SqlCommand对象创建一个SqlComman

11、d对象的语句为 String ConnectionString = "server =(local;uid=sa;pwd=;database=pubs"/创建一个SqlConnection对象SqlConnection MyConnection = new SqlConnection(ConnectionString;/打开Connection对象,以实现对Command对象的进一步操作MyConnection.Open(;string SqlString = "select * from authors"/创建一个SqlCommand对象SqlComm

12、and MyCommand = new SqlCommand(SqlString, MyConnection;2)SqlCommand和OleDbCommand对象的常用 属性和方法表11.3 Command对象的常用属性属性含义CommandText获取或设置对数据源执行的T-SQL语句或存储过程CommandTimeOut获取或设置在终止尝试并生成错误之前的等待时间Connection获取或设置SqlCommand实例并使用SqlConnection表11.4 Command对象的常用方法方法含义ExecuteReader将CommandText发送到Connection并生成一个SqlD

13、ataReaderExecuteNonQuery对连接执行T-SQ语句并返回受影响的行数(成功执行时,返回1,否则返回0;ExecuteScalar执行查询并返回查询所返回的结果集中第一行的第一列的值。忽略额外的列或行DataReader对象提供了一个只读的,单项前移的记录集;使用该对象可以有效地节约内存,因为内存中一次只保存一条记录,而不是将所有记录都装入内存。与DataSet相比,如果执行纯粹的读操作,DataReader的速度要快得很多。DataReader对象只能与Command对象结合使用,并要与Command对象采用的方式相匹配;对SqlCommand采用SqlDataReader

14、;对OleDbCommand则采用过OleDbDataReader各商家配合使用通用券方法镀金树叶吊坠1000枚欲执行一个会返回多结果集的数据命令,仍然是调用 SqlCommand.ExecuteReader 方法,然后在调用属性 NextResult 方法将数据读取器前移下一个结果集。如果有其他结果集, NextResult 方法会返回 TRUE ;否则会返回 False; DataAdapter 对象用来把来自特定数据源的信息调整为关系型数据格式,以适应DataSet对象的需要。DataAdapter对象的功能很强大,不但负责把DataSet与关系型数据源联系起来,而且能够自动改变Data

15、Set的数据结构。表DataAdapter对象的常用属性DM单表明DataReader对象是否已经关闭,为只读属性GetDataTypeName(i)tdtdtdtd 月份期次节日主活动周期特性DM档期预算项目商户参与宣传方式预算费用预期目标PR活动节日促销一月份11/1元旦喜迎新年幸运抽红包金羊报喜,抽奖连年惠战年终,全场特价元旦活动当天购物满100便可参与抽奖,给你不一样的新年礼物12/15-1/1奖品若干DM单页5000张条幅一个海报14张X展架2个气拱门、宣传车考虑到正值销售旺季故不要求各商家统一折扣销售,各商家可根据自身情况合理安排促销DM单微信平台信息报电视字幕宣传车等2年货采购季

16、金羊送福迎财神过新年,穿新衣,戴新帽,新年新气象,新年新风尚全场特价,年货也疯狂购满100省30/20/10元1/1-2/18同上同上DM单微信平台信息报电视字幕宣传车等二月份12/14情人节00有“情”天浓情蜜意,爱要久久2.14千支玫瑰送给您活动当天凡在商场购物满100元凭购物小票便可领取精美情人节礼品一份2/14DM单页3000张红玫瑰1000支X展架2个条幅一个同上DM单微信平台信息报22/18春节三月份13/5元宵节冬季出清大促销告别冬天走进春天您的新衣,我的心意三月扫货季,缤纷春季购物节冬季服饰全场八折起,春季新品抢先上市,部分新品超低价销售3/5-4-20DM单3000张条幅1个

17、X展架2个户外广告冬装全场八折起,春季新款第一件原价第二件九折DM单微信平台信息报23/8妇女节3/15消费者权益日3.8魅力女人节天天都是3.15,满意服务在003.8女人节,做美丽女人购物满200元送美甲服务一次3/8-3/15同上同上DM单微信平台信息报四月份14/1愚人节新装抢鲜、呼吸春天,春装全面上市四月踏青魅力出行缤纷春季购物节集章送好礼,活动期间,顾客在商场盖章处,集齐“恭”“喜”“发”“财”四枚印章后即可领取相应礼品。4/10-4/12同上同上DM单微信平台信息报24/5清明节草长莺飞四月天,祥盛购物扬“纸鸢”凡活动期间购物满100元便可领取精美风筝一只4/10-4/20同上同

18、上DM单微信平台信息报月份期次节日主活动周期特性DM档期预算项目商户参与宣传方式预算费用预期目标PR活动节日促销五月份15/1劳动节5/4青年节五一黄金周 幸运大转盘五一“大放价”先比拼,再血拼:拼豪礼、比幸运、比实惠5/1-5/3活动期间购物满100元便可参与幸运大转盘4/25-4/30DM单3000张条幅1个X展架2个户外广告奖品缤纷夏装全面上市,春装全面出清。春款服饰享购一件9折第二件8折优惠DM单微信平台25/10母亲节商场各种特色服务捆绑大行动.特别的爱送特别的礼,给母亲送上最贴心的关怀购物即送康乃馨5/10;购物满300元送品牌护手霜一支或美甲一次5/8-5/10康乃馨500支美甲

19、券200张全场女装、女鞋、美甲、化妆品、针织内衣及部分箱包配饰当天实行母亲节贴心特价活动DM单微信平台六月份16/1儿童节夏季初登场 购物送好礼购物即送商场扇子一把6/1-6/7商场扇子1000把DM单微信平台26/20端午节6/21父亲节粽飘香,庆双节,父爱如山感恩有礼父爱如山,老爸也时尚活动期间购物满100送精品男袜一双或精装粽子一份6/206/21精品男袜300双精装粽子300份全场男装、男鞋、皮具实行特价销售DM单微信平台七月份17/1建党节仲夏大行动 全场9.5折起再满150返20元代金券仲夏大行动激情年中会,时尚根本停不下来,重新搭配我们认知世界的色彩全场9.5折起再满150返20

20、元代金券7/8-7/22DM单3000张20元代金券500张全场9折起再满150返20元代金券DM单微信平台2学子有礼,本人持中考/高考准考证、入取通知书领取20元通用券八月份18/1建军节夏日反季特卖会午后疯狂,限时抢购会每日午后1点至3点,服装区都有惊喜特价品8/1-8/10DM单3000张各商家推出限时抢购商品DM单微信平台28/20七夕七月七日晴,转角遇爱情,饰品全区8.5折“爱情见证人”举办祥盛拥抱比赛,情侣报名参加,男士将女士抱起,坚持时间最久的一对获胜,获得金玫瑰一支8/19-8/21金玫瑰20支饰品区全场8.5折DM单微信平台月份期次节日主活动周期特性DM档期预算项目商户参与宣

21、传方式预算费用预期目标PR活动节日促销九月份19/10教师节开学特卖“惠”新学期新装备,让你到哪都是时尚达人持续学子有礼活动29/27中秋节双节同庆 连环礼-满300返50 9/27-10/7月圆中秋,情浓祥盛国庆嘉年华越购越开心秋季新品全面上市,夏装全面出清满100送“温馨月饼”一盒,满200元送“月饼红酒”礼盒一份9/27-10/7DM单5000张条幅1个X展架2个户外广告中秋礼盒若干缤纷夏装全面出清,秋装全面上市DM单微信平台信息报十月份110/1国庆节尽享意外惊喜-“国庆购物不花钱”设抽奖箱,内有30个乒乓球其中全额1个,半额2个其余为纪念将(福彩刮刮乐一张)即时开奖活动当日凭单张购物

22、满100元购物小票便可参与抽奖,有机会获得该票全额和半额消费返还10/1-10/3DM单5000张条幅1个X展架2个户外广告福彩刮刮乐1000张DataReader对象的常用属性和方法如表11.5和表11.6所示表对象的常用属性10/21重阳节属性节后再续礼,秋日最后的疯狂男装女装鞋满300减50HasRows表明是否还有记录未被读取。为只读属性10/12-10/25DM单微信平台3 DataReader常用的属性和方法通过Command对象ExecuteReader方法执行购物有惊喜送大礼 DataReader对象,DataReader“双十一”00对象的属性与方法逐一取得每条记录或相关字段

23、的数据线下也疯狂“脱光”狂欢价含义DM单3000张完成读取DataReader对象的查询结果,可使用这个方法关闭DataReader对象DM单将从当前DataReader查询结果中取得的数据记录的字段总数返回。若返回值为5,表示该条数据记录共有50-4(字段下标从0开始)用于获取字段的数据类型名,参数i为字段序数GetName(100元、200元-*获取字段名,参数i为字段序数DataReader“字段名称”DM单取得字段名称所指的字段数据GetValues(ArrayName全场商家持续冬季新品特价抢购活动读取记录中所有字段值,并将结果存入数组,参数ArrayName为数组名单微信平台信息报

24、IsDBNull(i)十二月份判断某个字段是是否为,字段下标从0开始算起,若没有数据返回true,否则返回falseGetValue(i)取得第i个字段的数据内容,字段下标从0开始算起GetOrdinal2取得某个字段的下标。0为第一例Read()先将记录指针移到下一条,并判断记录指针是否指到EOF(文件结束符号)。若记录指针指到圣诞、元旦活动当天购物满false;若记录指针没有指到EOF,则返回True;DM张条幅1个BOF展架21户外广告2全场商家持续冬季新品特价抢购活动3DM4微信平台5EOF合计预算属性含义DeleteCommand获取或设置一个T-SQL语句或存储过程,以从数据集删除

25、记录InsertCommand获取或设置一个T-SQL语句或存储过程,以在数据源中插入新纪录SelectCommand获取或设置一个T-SQL语句或存储过程,用于在数据源中选择记录UpdateCommand获取或设置一个T-SQL语句或存储过程,用于更新数据源中的记录表11.8 DataAdapter对象的常用方法方法含义Fill在DataSet中添加或刷新行以匹配数据源中的行(即同时执行SQL语句)(SelectCommand)GetFillParameters获取当执行SQL Select语句时用户设置的参数Update为DataSet中每个插入,已更新或删除的行条用相应的Insert,U

26、pdate或Delete语句(InsertCommand,DeleteCommand,UpdateCommand)即更新数据库里面的数据。DataSet对象是一个简单,存储在内存的数据库,提供了一个不依赖于数据源而可进行持续编程的模型。一个DataSet表示整个数据集,包含相互联系,约束和关系等内容。DataSet包含一个或多个DataTable对象,DataTable表示来自一个表的行集合。DataTable对象有数据行(DataRow)和数据列(DataColumn),以及主键,外键约束和有关DataTable对象中数据的关系信息组成。对DataSet对象中数据的操作时通过调用这些子对象的

27、方法完成的。DataSet(数据集)是ADO.NET离线数据存取结构中的核心部分,其功能主要是在内存中暂存并处理各种从数据源中所取回的数据要全面了解DataSet对象,首先要了解DataTable对象。利用DataTable对象和方法可以对DataTable中存储的数据信息进行访问。DataTable的常用属性如表11.9表11.9 DataTable对象的常用属性属性含义TableName用来返回表名Columns用来返回表所包含所有列,可以用Columns.Count表明列数,用Columns(列序数或列名)具体引用每一列,每一列都是一个DataColumn对象Rows用来返回表所包含的所

28、有行(记录),可以像Columns属性一样用Rows.Count表名行数,使用Rows(行序数)来引用行,用Rows.Item(列序数或列名)引用行的某列,每一行都是一个DataRow对象1 .NET Data Provider.NET 数据提供之是指存取数据源的一组类库,主要是为了统一各类型数据源的存取方式而设计出一套高效类库。在.NET Data Provider中包含了下表四个对象对象名称功能说明Connection提供和数据源的连接功能Command提供存取数据库命令,并执行传送数据或修改数据的命令,例如执行SQL命令,预存程序。DataAdapter担任DataSet对象和数据源间的

29、桥梁,DataAdapter使用四个Command对象来执行查询,新增,修改,删除的SQL,把数据加载DataSet,或者把DataSet内的数据更新返回数据源DataSet通过Command对象执行SQL查询命令取得数据流,以便进行高速,只读的数据浏览功能在上表中,通过Connection对象可与指定的数据库进行联机。Command对象用来执行相关的SQL命令(Select,Insert,Update,Delete)。以读取或修改数据库中的数据。通过DataAdapter对象内的提供的四个Command对象进行离线式的数据存取,这四个Command对象分别是SelectCommand,Ins

30、ertCommand,UpdateCommand和DeleteCommand。其中SelectCommand用来将数据库中的数据读出并放到DataSet对象中,以便进行离线式的数据存取,至于其他三个命令对象则是用来将DataSet对象中的数据修改,并返回数据库中。通过DataAdapter对象的Fill方法可以将数据读到DataSet中,通过Update方法则可以将DataSet对象的数据更新到指定的数据库中。至于查询语句,还可以通过Command对象设置SELECT查询语句和Connection对象设置数据库联机,执行数据查询后取得DataReader对象,以只读方式进行往下的逐条数据浏览2

31、. DataSetDataSet(数据集)是ADO.NET离线数据存取结构中的核心对象,其功能主要是在内存中暂存并处理各种从数据源中所取回的数据。DataSet其实就是一个存放在内存中的数据暂存区,这些数据必须通过DataAdapter对象与数据库做数据交换。在DataSet内部允许同时存放一个或多个不同的数据表(Data Table)对象.NET Framework内置提供下列两种 .NET Data Provider:(1) SQL .NET Data Provider支持Microsoft SQL Server 7.0及2000以上的版本,由于它使用自己的通讯协议并且已优化,所以可以直接

32、存取SQL Server数据库,而不必使用OLE DB或ODBC(开放数据库互联)接口,因此执行效率较高。程序中使用SQL.NET Data Provider,则该ADO.NET对象名称前面都要加上Sql,如SqlConnection,SqlCommand(2) OLE DB.NET Data Provider支持通过OLE DB接口来存取像Dbase,FoxPro,Excel,Access,Oracle,以及SQL Server。等各种类型数据源。程序中若使用OLE DB.NET Data Provider,则ADO.NET对象名称前面都要加上OleDb,如OleDbConnection,O

33、leDbCommand。第十一章 ADO.NET数据库联机与存取下面只列出ADO.NET常用的命名空间相关说明1 System.Data是ADO.NET命名空间的核心;大部分是由ADO.NET架构的类组合而成。这些类是Managed应用程序存取数据的主要方法。它定义了Tables,Rows,Columns,Constraints和DataSet类。由此可知,DataSet类位于System.Data命名空间,在编写程序时若用到DataSet类,必须在程序的最开头使用using语句来引用此命名空间,其写法如下Using System.Data /引用ADO.NET基本对象这个命名空间允许你联机到

34、OLE DB类型的数据源,接受SQL查询和使用OleDbDataAdapter对象的Fill方法,该方法用来将数据填入到DataSet中。这个命名空间允许你联机到SQL Server 7.0(含)以上版本的数据库,使用该类型可以直接与SQL Server联机。若在程序中使用该类型的数据库,必须在程序的开头使用using语句引用此命名空间,其写法如下在SQL.NET Data Provider下,所用的ADO.NET对象名称前面必须加上Sql,如SqlConnection下表是ADO.NET在所属命名空间中各对象命名的对照表System.Data.OleDbSystem.Data.SqlClie

35、ntOleDbConnectionSqlConnectionOleDbCommandSqlCommandOleDbDataReaderSqlDataReaderOleDbDataAdapterSqlDataAdapterOleObParameterSqlParameter11.2 如何运用Connection对象打开,关闭数据库的联机ADO.NET 提供的Connection对象,主要用来与数据库建立联机。Connection对象提供下列两种常用方法;(1) Open方法:用来建立并打开一个数据库的联机(2) Close方法:将数据库的联机关闭接着介绍ADO.NET架构下,如何引用ADO.NE

36、T命名空间,打开和关闭两种不同数据源联机的程序代码(1 引用命名空间Using System.Data(2 声明OleDbConnection连接对象OleDbConnection myConnection;(3 声明一个名为conStr的字符串变量,用来存放数据库的联机字符串,并指定数据库所在的真实路径String conStr(4 建立OleDbConnection对象并指定其数据库的联机字符串myConnection=new OleDbConnection(conStr)(5 使用Open方法打开与数据库的联机myConnection.Open(;(6 完成数据库存取后在使用Close方

37、法关闭与数据库的联机myConnection.Close(;操作方式和上述类似,先声明SqlConnection对象,再建立SqlConnection对象,并指定联机的数据库,最后使用Open方法打开与数据库的联机,使用Close方法关闭与数据库联机。但SqlConnection及OleDbConnection对象的数据库联机字符串写法不一样Using System.DataString ConnectionString = "server =(local;uid=sa;pwd=;database=pubs"/创建一个SqlConnection对象SqlConnection

38、 MyConnection = new SqlConnection(ConnectionString;/打开Connection对象,以实现对Command对象的进一步操作MyConnection.Open(; /打开与数据库的联机MyConnection.Close(; /关闭与数据库的联机以下是SqlConnection对象联机字符串的参数设置(1) Server:可指定数据库的服务器名称,IP地址,localhost(代表本机)(2) Database:SQL Server数据的名称(3) Uid:数据库;连接账号,sa表示SQL数据库管理者账号(4) Pwd:数据库连接密码11.3 如

39、何运用DataReader对象读取数据库上一节已经介绍如何打开与关闭数据库的联机,本节将陆续介绍如何对已联机的数据库,通过ADO.NET架构内的Command及DataReader对象读取数据库内的数据。(1) Command对象Command对象可以让你执行SQL数据库命令,以传送和修改数据,执行存储过程,并且传送或获取参数信息。所以,Command对象通过SQL命令可以从数据源获取数据,也可以将修改过的数据传回数据源。此对象提供下列两种方法来存取数据库的内容(1)ExecuteReader方法执行Command对象的Select命令,建立一个DataReader对象进行数据的浏览(2Exe

40、cuteNonQuery方法使用Command对象的ExecuteNonQuery方法,新增,删除,修改数据库中的数据,也就是说执行SQL语法中的Insert,Delete,Update命令(2) DataReader对象使用DataReader对象可以从数据库中顺向(Forward-only)逐条读取数据流中的数据记录,由于并不是一次将所有数据传向客户端的内存中,因此可以提高应用程序的效率。DataReader对象读取数据方式是先通过Connection对象和数据库联机,再通过Command对象的ExecuteReader方法执行SQL Select命令获取查询的数据,使用Connectio

41、n对象建立与数据库的联机通过 Command 对象提 通过 DataReader 对象 供的ExecuteReader方法, 的方法,进行数据浏执行SQL的Select查询命令, 览,由开头向下逐条建立一个DataReader对象 读取数据库中的数据DataReaderCommand 数据库显示查询结果Connection4 如何使用DataReader读取查询结果若想通过DataReader对象读取查询结果,可以使用重复结果检查记录指针是否已经知道EOF文件结束符号,若记录指针尚未知道EOF表示数据没读完,便可使用DataReader的方法和属性,顺向逐一取得每个字段的名称和该方法字段内的数

42、据,若记录指针指到EOF表示数据已经读取完毕,便可结束读取动作。(1) 如何通过DataReader对象取得数据记录的字段名称利用For计次循环配合DataReader对象的FieldCount属性及GetName方法取得每列的字段名称,并将字段名称显示在richTextBox1丰富文本框上:/列段的数目For(int i=0;i ) richTextBox1.Text+=myDataReader.GetName(i;(2) 如何通过DataReader对象显示字段数据。有下列两种方式。第一种方式在需要显示所有字段数据时使用,第二种方式是仅显示部分字段内容时使用;(1) 利用DataReade

43、r对象方法读取数据,通过While。语句判断记录指针是否指到EOF?11.4如何使用DataSet对象来读取数据1 DataSet对象DataSet对象可以是ADO.NET的主角,它像是一个内存中数据库,采用离线存取方式;例如:数据可以从应用程序与SQL Server数据库分别安装在不同的主机上,当数据库应用程序要从SQL Server数据库取数据时,数据库会将所要的数据全部传送到执行数据库应用程序的计算机(DataSet)中,此时就可与数据库中断联机。当DataSet中的数据更新完毕后,再重新和数据库进行联机,将所有数据一次更新到数据库中,因此DataSet执行效率高,适用于多客户端数据存取

44、,但此种方式需耗费较多内存空间。在DataSet中可以包含一个以上的DataTable对象,DataTable对象相当于内存中的一个数据表。2 DataAdapter对象DataAdapter对象是数据库和DataSet之间沟通的桥梁。 DataAdapter对象使用Command对象执行SQL命令,将从数据库获取的数据送到DataSet,此时便可使用DataTable对象来存取数据表,将DataSet里面的数据经过处理后再送回数据库。3如何使用DataAdapter对象使用下列步骤可以产生名称为“成绩数据表”与“股票行情表”的DataTable对象(1) 建立名称为myDataSet的Dat

45、aSet对象以及声明myAdapter适应DataAdapter对象:DataSet myDataSet=new DataSet() ;OleDbAdapter myAdapter ;(2) 建立myAdapter对象并指定所要执行的SQL命令及要联机的数据库selectCmd=“Select * from SCORE” /查询SCORE数据表myAdapter=new OleDbDataAdapter(selectCmd,myConnection);(3) 使用DataAdapter对象的Fill方法,将查询结果放到DataSet对象中。此时DataSet对象中即会产生一个DataTable

46、对象,该DataTable对象会以数据表的方式存放查询结果,所以只要通过DataTable对象即可取得SQL命令查询的数据myAdapter.Fill(myDataSet,“成绩表”) /成绩表为表的名称注意使用DataAdapter对象的Update()与Fill()方法时,Connection对象会自动与数据库打开联机及关闭联机,因此不必再使用Connection对象的Open及Close方法来打开与关闭数据库的联机。其程序写法如下(完整程序代码)OleDbConnection conn;Conn=new OleDbConnection(connStr)DataSet myDataSet=

47、new DataSet();OleDbDataAdapter myAdapter;/建立数据库表的DataTable对象selectCmd=“Select * from SCORE“;myAdapter=new OleDbDataAdapter(selectCmd,myConnection);myAdapter.Fill(myDataSet,“成绩表“);/建立股票行情表的DataTable对象selectCmd=“Select * from Stock“; /查询STOCK数据表myAdapter=new OleDbDataAdapter(selectCmd,myConnection)myA

48、dapter.Fill(myDataSet,“股票行情表“;上述程序在DataSet对象中产生了“成绩表“及”股票行情表“两个DataTable对象也可以通过DataSet对象提供的Tables集合对象(由DataTable对象构成),来指定取用哪一个DataTable对象DataTable myDataTable1,myDataTable2;myDataTable1=myDataSet.Tables“成绩表“myDataTable2=myDataSet.Tables“股票行情表“上述程序也可以改用表格编号来取得DataTable对象,Tables集合对象的小标起始为0;DataTable m

49、yDataTable1,myDataTable2;myDataTable1=myDataSet.Tables0myDataTable2=myDataSet.Tables1通过下面程序取得DataTable的总数或DataTable名称myDataSet.Tablesi.TableName; /取得第i个DataTable对象的名称若DataTable对象指定给DataGrid控件的DataSource属性,则DataGrid控件会显示该DataTable对象中的所有数据;如下程序/让dataGrid1控件显示DataSet对象中“股票行情”DataTable对象的所有数据dataGrid1.D

50、ataSource=myDataSet.Tables“股票行情”DataSet对象与DataTable对象之间的关系DataTable对象N-1图中的N值为DataSet中DataTable数目其写法如下: 5 如何使用DataTable对象取得数据在前面曾提及DataTable对象有如内存的数据表。因此,只要通过下列属性 ,即可取得名称为myDataTable的DataTable对象中的数据:(1) 取得DataTable的字段数目 (2) 取得DataTable的第K个字段名称,标注起始值为0;myDataTable.Columnsk.ColumnName; (3) 取得DataTable

51、的数据总条数:(4) 取得DataTable的第i行第j列的数据内容,标注起始值0:myDataTable.Rowsij; DataTable对象的结构如图11.9所示编号Columns0姓名Columns1电话Columns2.性别Columnsk-1123.NRows0Rows1Rows2Rowsi2Rowsi0Rowsi00Rowsij-1Rowsi-1 6 如何使用DataTable显示查询结果的所有记录只要通过下列程序代码,便可以取得DataTable对象中的数据For循环配合ColumnName取得第i列的字段名称,并放入rtbShow丰富文本框内For(int k=0;k ; k

52、+ ) rtbShow.Text+=myDataTable.Columnsk.ColumnName;(7)取得DataTable对象的字段数据内容,有下列两种方法方法一:使用嵌套循环逐一取得DataTable对象第i行第j列的数据,并放入rtbShow丰富文本框内,其写法如下:For(int j=0;j rtbShow.Text+=myDataTable.Rowsij;rtbShow.Text+=”n”;方法二:DataTable对象存放数据的方式就像表格一样(二维数组),可以使用嵌套的foreach。循环,逐一取得DataTable对象所有字段的数据去,其写法如下Foreach(DataRo

53、w myDataRow in myDataTable.Rows)Foreach(object obj in myDataRow.ItemArray)rtbShow.Text+=obj.ToString(;6使用Command对象及SQL语法更新数据库编好新增(Insert),删除(Delete),修改(Update)数据的SQL语法后,就可以通过Command对象的ExecuteNonQuery方法来更新数据库的数据。OleDbCommand myCommand;myCommand=new OleDbCommand(SQL语法,myConnection;/使用Command对象的ExecuteNonQuery方法更新数据库myCommand. ExecuteNonQuery(; /返回受影响的数据的行数第12章 ADO.NET数据库浏览与绑定本章将介绍如何使用DataView对象来排序与过滤数据;如何使用BindingManagerBase对象来移动数据记录指针;如何将两个数据表关联;数据如何绑定等技巧;12.1 D

温馨提示

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

评论

0/150

提交评论