4-1-3 ADO.NET对数据库的访问
1.断开式数据库访问连接
ADO.NET技术中,最重要的一条就是采用断开式数据库访问连接。所谓断开式数据库访问连接就是指客户端从数据源获取数据后,断开与数据源的连接,所有的数据操作都是针对本地数据缓存里的数据,当需要从数据源获取新数据或者被处理后的数据回传,这时客户端再与数据源相连接来完成相应的操作。断开式数据库访问连接最为核心的对象是DataSet对象,一旦通过数据适配器将数据填充至DataSet对象后,则今后的数据访问将直接针对DataSet对象展开。具体过程可以参照图4-7来理解.
图4-7 断开式数据库访问示例图
首先,数据适配器(DataAdapter对象)选择连接和命令从数据库获取数据(Connection对象),通过填充操作将数据装载到数据集(DataSet对象);然后,数据集作为WinForm程序控件的“数据源”,通过数据绑定控件使数据集中的数据与WinForm程序控件中的数据保持一致。这时客户端使用的数据,在填充那一刻就已经被缓存了。用户通过WinForm应用程序操作的数据都是针对本地缓存里的数据进行的。当数据被修改后需要回传,再通过数据适配器重新连接数据库,将数据保存在数据库内。这里需要注意点是:将数据传递到用户界面时,ADO.NET采用XML格式。
2.连线式数据库访问连接
ADO.NET技术中,另一种数据库访问连接方式就是连线式数据库访问连接。所谓连线式数据库访问连接就是指客户端从数据源获取数据后,通过DataReader对象一条一条的从数据源之中将访问到的数据行读取到客户端的过程,在这种只读前进式的数据访问读取过程中,DataReader对象必须时刻与数据源保持连接,因此这种方式访问数据库的特点是:在前进只读方式访问数据表时候其效率较高。具体过程可以参照图4-8来理解。
图4-8 连线式数据库访问示意图
3.对于Insert,Update,Delete等单向操作
对于插入、删除、修改等操作,由于是客户端应用程序向数据库提出的请求,不需要返回源数据,这个过程是单向操作。单向操作的具体过程如图4-9所示:
图4-9 Insert,Update,Delete单向操作图
主要有三个过程:首先,建立针对具体数据库的Connection对象,利用Connection对象的Open()方法打开数据库;然后,包含插入、删除、修改等命令信息的Command对象和DataAdapter内伴生的Command对象都可以利用Execute系列方法执行命令信息对应的命令;最后,利用Connection对象的Close()方法关闭数据库。
这里有一点要强调,DataAdapter内伴生的Command对象有四个:SelectCommand、InsertCommand、DeleteCommand、UpdateCommand 。命令信息中要求执行的是Select命令则由SelectCommand调用相应方法实现,Insert用InsertCommand,Delete用DeleteCommand,Update用UpdateCommand。
4.对于Select的双向操作
对于查询操作而言,由于是客户端应用程序向数据库提出的请求,需要返回源数据,这个过程是双向操作。双向操作的具体过程如图4-10所示:
图4-10 Select的双向操作图
主要有三个过程:首先,建立针对具体数据库的Connection对象,利用Connection对象的Open()方法打开数据库;然后,包含查询命令信息的Command对象和DataAdapter内伴生的SelectCommand对象都可以执行命令信息对应的命令,查询得到的数据可以通过DataReader对象获取或者被DataAdapter对象用Fill()方法填充在DataSet对象中;最后,利用Connection对象的Close()方法关闭数据库。