签到

05月05日
尚未签到

共有回帖数 1

    做月子

    等级:
     以往我们对数据库进行操作的方法是先连接上一个数据库,在保持连接的状态下进行数据的各种操作,如增删改查。这样的状况会有两个弊病,一是始终保持连接会造成资源的浪费,二是网络的各种不稳定因素会是这种连接发生丢失,从而对数据的操作也将丢失。  鉴于以上所说道的两个或更多的其他原因,微软提出了另一种操作模式,就是非连接模式的数据操作,当然也没有丢弃以前ado中那种典型的连接模式的数据操作,故而诞生了ado.net及其两种典型的数据操作模式,即连接模式和非连接模式。  当然,无论是采用那种模式来操作数据,首先是要取得数据连接然后对数据源进行操作或对数据源的副本进行操作。则连接为第一步必须完成的工作。连接的方法和ado时代没有多大的差别,不外乎与首先建立一个连接对象(或叫做实例化一个连接对象),要完成连接必须知道连接的数据源地址,有的还要知道数据源提供者。下面是典型的列子:  string connString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;";  string connstring="Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;";  //一般来说OLEDB数据源需要设定provider  一次到位的实例化连接对象  OleDbConnection myconn=new OleDbConnection(connstring);  或用Connection的属性设置连接对象的数据源  OleDbConnection myconn=new OleDbConnection();  myconn.ConnectionString=connstring;  接下来就可用connection的open()方法打开连接了  myconn.open()  连接已经完成,接下来进入最重要的数据操作阶段(需要详细了解连接对象建立的同学可以自己去多查查资料哦)一、连接模式  连接模式下 担负主要责任的对象是DataReader(然而说到DataReader那又不得不提到ExcuteReader()这个方法,因为DataReader是没有构造函数的一个类,DataReader只能通过command类的excutereader()方法来实例化),所以Datareader有以下几个特点:  1.它无构造函数只能通过command的excutereader()方法来实例化,  如:sqlcommand sqlcm=new sqlcommand(); sqldatarader dr =sqlcm.excutereader();  2.它使用数据库时数据库连接必须保持打开状态(在这种状态下无法进行与connection相关的操作)  3.它只能从前往后遍历信息,不能中途停下修改数据  4.基于我前面说过的始终保持连接浪费资源,加上上面的第二条,那么我们必须用完就关闭,如:  dr.close()或者如果我们怕忘记关闭,在实例化时给个参数commandbehavior.closeconnection  sqldatarader dr = cmd.executereader(commandbehavior.closeconnection);  DataReader的用法比较灵活,一般都是通过条件判断来实现,如:  while(dr.reader())  {  ................  }
    也有人为了操作的某种目的,通过DataReader数据读出来,然后存在一个新建的空DataTable中从而将DataReader转化成了DataTable,这种做法究竟是否可取,还真是仁者见仁智者见智。如果您实在是想在DataTable和DataReader之间进行转化,可以用下面的方法:  DataReader转DataTable:  DataTable.Load(DataReader对象,LoadOption.OverwriteChanges);  DataTable转DataReader:  DataReader Reader=DataTable.CreateDataReader()二、非连接模式  非连接模式下担负主要责任的两个对象是DataAdapter和DataSet  非连接模式下DataAdapter起到了一个桥梁的作用,看到这个有的人可能会联想到网络适配器或电源适配器,没错

    楼主 2016-08-31 19:14 回复

    做月子

    等级:
    ,他们的功能都是一样的,将各种不同的网络类型电源类型转化成统一能够满足要求的类型,这里的DataAdapter就是数据适配器,将各种不同类型的数据源经过适配转化成可以填入Dataset的数据。  DataAdatper对象的使用一般有两种作用,一种是通过command对象如sqlcommand来执行sql语句,从数据源中检测数据,并将检索到的结果填充到DataSet中;还有一种就是把用户对DataSet对象对数据的改变更新到数据源中去。  有人要忍不住问了,为什么非连接模式不需要做这一步呢???  其实连接模式下通过command对象将所有对数据对象的单步操作都直接更新到数据库里去了,这叫单体操作。  而连接模式下Dataset因为和数据服务器断开的,对单体的操作没有机会随时更新到数据库里去,这也就要求有这么一个对象在所有的数据操作完成后对各种数据操作(如增删改等操作)用各种对应的SQL命令统一更新到数据库里去,而这个对象就是DataAdapterle ,所以可以这么说,DataAdapterle 采用的它内嵌的SQL命令集进行的批量SQL操作。  我们首先来看看command和dataadapter的实例化,一般我们可以这样来实例化他们:












    1楼 2016-08-31 19:16 回复

共有回帖数 1
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知