当前位置:Gxlcms > 数据库问题 > 模拟在内存中的数据库DataSet相关的类

模拟在内存中的数据库DataSet相关的类

时间:2021-07-01 10:21:17 帮助过:10人阅读

SqlCommandBuilder(adapter); //或者向下面这样 SqlCommandBuilder scb2 = new SqlCommandBuilder(); scb2.DataAdapter = adapter;

数据表的主键大家都知道,那这个每行的RowState是什么东西?

其实我们在对DataTable中的行进行增删改操作时,这些行都没有并没有被改动,而是其RowState这个属性被修改了,这属性是一个只读的枚举类型。

【详细的RowState请看本人博客中另一篇DataTable中的RowState属性】

3、DataAdapter

继承层次图:

技术分享

图里面写到了ODBC,Ole,那我就理一下关于连接数据库的发展历史:

  1. odbc之前:使用的不同的数据库都有各自对应数据库访问API,领导说换数据库,那就需要修改源码,这会整死程序猿的;
  2. odbc时:定义了一个公共数据访问层,可以用来访问几乎所有的关系型数据库,各个数据库厂商提供相应的驱动即可;
  3. ole db时:基于odbc,不仅可以访问关系型数据库,还可以访问非关系型数据
  4. 那什么是ADO呢?ADO是面向对象的结果,能够做到和ole db一样,但比ole db更简单,也就是说,ADO将ole db中的方法封装成多个类,只要主要是九个类的使用;
  5. ADO.NET呢?这个主要是增加了一个SqlClient,专门用于访问SQL Server,也是它访问SQL Server最快。

我也是主要使用SqlDataAdapter这个类,如果论通用性,当然是使用OleDbAdapter会好一点。

下面就讲一下SqlDataAdapter这个类:

它有四个构造函数:

技术分享

在这里也可以讲一下SqlDataAdapter和SqlDataReader的区别:

      SqlDataAdapter的实例是一次将需要的结果集拿到内存中,并自动关闭数据库连接(以后数据库连接都称为conn);而SqlDataReader的实例是调用Reader()方法,它维持了一个指针的作用,一次读取一个元组并自动向下挪动一位,并且只能从结果集中的第一行开始,不能回头(上一篇博客有讲过SqlDataReader对象),而且在这个挪动指针读取元组的过程中,conn一直保持连接,需要手动去关闭,或者使用using代码块。如果只是要查询数据,使用SqlDataReader会更好一点,因为他速度比SqlDataAdapter要快。

模拟在内存中的数据库DataSet相关的类

标签:修改   www   结构   sql   isp   定义   设置   and   cin   

人气教程排行