共有回帖数 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 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知