ADO.NET是.NET Framework内的数据访问方法。

ADO.NET提供对数据库或外部数据源的访问接口,它本身实现了面向连接与面向无连接两种数据访问方式。

 

面向连接是以数据连接为基础,打开数据库连接后,将数据访问指令送入数据库内执行,利用游标来存取结果集的访问方式,优点是访问速度快,缺点是必须建立连接,有锁定问题

面向连接的方式以IDBConnection接口为起点,通过open()方法打开数据库连接,在操作晚上数据库连接后用close()方法关闭数据库连接(若是需要数据库事务处理,则要在连接打开后使用BeginTransaction方法来启动事务处理,并得到IDbConnection接口的对象,事务处理的结果一般不是全部success就是全部failed,因此在执行的过程中若是发生任何错误或是需要撤销事务处理时,可使用RollBack()来撤销,反之使用commit()来提示完成)。

当连接打开后,即可对数据库进行SQL指令的操作,而在执行SQL指令之前,必须将指令封装在IDbConnection接口对象中,这个对象内含了参数的设置,例如执行超时(TimeOut)指令准备(prepare)以及加入了事务处理等设置。当指令设置完成时,就可以使用ExecuteReader()、ExecuteNonQuery()以及ExecuteScalar()来执行。

ExecuteReader()会回传IDataReader接口对象,IDataReader接口对象代表了数据库返回的单项前进游标,且单向前向游标是只读的,所以不能直接操作IDataReader接口对象来修改数据,修改数据唯一可用的方法只有执行Insert、update、delete这三个SQL指令,这样的方法能让程序访问数据库的速度加快,而且ADO.NET也不再需要维护数据集的游标,相对节省耗用的资源。executeReader()是获取IDataReader接口对象的唯一方法,而IDbCommand的其它方法,如ExecuteNoneQuery()以及ExecuteScalar()都调用了ExecuteReader()来执行命令,只是最后的返回值不通过

IDataReader接口对象的使用相当简单,每调用以此read方法即可将游标往前移动一行,而在游标移动后,就可以利用GetValue方法来获取字段的值,或者使用GetOrdinal()获取字段的索引编号,也可以利用IsDNull()来判断字段是否为null值

 

面向无连接则是先以面向连接的方式获取数据后,将数据存放在内存内,再通过一系列的对象、属性与方法等进行数据的访问。优点是节省数据库的连接资源,没有锁定问题,缺点就是耗费内存,数据更新不及时

脱机功能是ADO.NET 的特色之一,有DataSet与DataTable提供,Dataset可以是内存里的数据库,而DataTable可以是内存里的数据表,一个DataSet可以有多个DataTable

DataSet的数据由面向连接的IDbDataAdapter接口对象的Fill()获得,IDbDataAdapter会利用selectCommand属性所含的select指令执行的结果来生成相应的DataTable,并加到DataSet中,或是直接以fill()生成DataTable,在手动添加到DataSet中。
DataSet本身也支持XML数据的输入和输出,只要调用ReadXml()即可有XML数据生成Dataset,或调用WriteXml生成XML数据,DataTable也有相同的方法。

DataTable是实际存储数据的对象,本身就是一个内含大量集合对象的容器,在DataTable中容纳了定义字段的dataColumn对象以及加载数据的DataRow对象,每个Datarow代表一个数据行。


基本上,无论是面向连接还是面向无连接的数据访问,多半都是以弱类型的方式处理,但MVC所要求的Model应该为强类型,