vb.net 如何访问数据接口

2025-10-20 05:14:18

1、一、接口种类:6种:

        1、ODBC,面向C/C++。

        2、DAO,   面向VB,操作ACCEss

        3、RDO,上面的加强型

        4、OLE DB

        5、ADO,      对OLE DB的加强型

         6、ADO.net,    ADO的加强型。

2、二、ADO.net概述:

        Ado.net基于XML和离线计算模型。

        ADO以Recorderset存储,类似单表,若要多表就要多表连接。必须在线

        ADO.net可以在线或离线,DataSet直接可以是多表。

        ADO使用Com技术,ADO.net基于XML格式,数据类型更丰富。

         体系结构如下图:

ADO.net的两个核心组件:.Net数据提供程序(左)、DataSet(右)。

          .net数据提供程序用来与数据库的连接。包括Connection,Command,DataReader,DataAdapter四个。

           DataSet用来与XML数据连接。设计的目的是独立于任何数据源的数据访问,可有多种不同数据,也可用于XML数据。

           

           DataSet

           它内部用XML描述数据,与平台无关。其内常用对象是DataTable和DataRow等。DataSet通过DataAdapter获得数据,

           DataAdapter就是DataSet与数据库之间的桥梁,也就是前面的搬运工。它把数据库中的结果集搬运到本地缓存中,这样

           就可与数据离线,直接处理DataSet,处理完后,再连接,再搬运回数据库。

        

            DataSet有三个特点:

             1、独立性:独立于各数据源。即与数据库不发生关系,专注于处理。

              2、离线连接:  一般是离线,只是返回数据库时,才保持连接。

              3、XML描述:   DataSet对象是用XML格式表示的关系型数据视图。

              数据提供程序

             它提供四个对象,保持与不同数据库连接。

             1、SQLServer.net数据提供程序,空间:System.Data.SqlClient, 操作SQl2000或以上版本。

              2、OleDb.net数据提供程序,空间:System.Data.OleDb,主要访问Access,FoxPro等

              3、OracleDB.net数据提供程序,空间:System.Data.OracleClient,支持Oracle8.1.7以上版本。

              4、ODBC.net数据提供程序,空间:System.Data.Odbc

vb.net 如何访问数据接口

3、ADO.net的两个核心组件:.Net数据提供程序(左)、DataSet(右)。

          .net数据提供程序用来与数据库的连接。包括Connection,Command,DataReader,DataAdapter四个。

           DataSet用来与XML数据连接。设计的目的是独立于任何数据源的数据访问,可有多种不同数据,也可用于XML数据。

           

           DataSet

           它内部用XML描述数据,与平台无关。其内常用对象是DataTable和DataRow等。DataSet通过DataAdapter获得数据,

           DataAdapter就是DataSet与数据库之间的桥梁,也就是前面的搬运工。它把数据库中的结果集搬运到本地缓存中,这样

           就可与数据离线,直接处理DataSet,处理完后,再连接,再搬运回数据库。

        

            DataSet有三个特点:

             1、独立性:独立于各数据源。即与数据库不发生关系,专注于处理。

              2、离线连接:  一般是离线,只是返回数据库时,才保持连接。

              3、XML描述:   DataSet对象是用XML格式表示的关系型数据视图。

              数据提供程序

             它提供四个对象,保持与不同数据库连接。

             1、SQLServer.net数据提供程序,空间:System.Data.SqlClient, 操作SQl2000或以上版本。

              2、OleDb.net数据提供程序,空间:System.Data.OleDb,主要访问Access,FoxPro等

              3、OracleDB.net数据提供程序,空间:System.Data.OracleClient,支持Oracle8.1.7以上版本。

              4、ODBC.net数据提供程序,空间:System.Data.Odbc

三、ADO.net的五个核心对象

       这个说五个是:

       Connection对象负责连接数据库

       Command对象负责生成执行SQl语句

       DataReader对象负责读取数据库的数据

        DataAdapter对象负责在Command对象执行完SQL语句后生成并填充DataSet和DataTable。

         DataSet对象负责存取和更新数据。

        1、Connection对象

             表示一个数据源的单个连接。

vb.net 如何访问数据接口

4、 例一:连接Access的例子:

vb.net 如何访问数据接口

5、例二:连接Sqlserver的例子:

vb.net 如何访问数据接口

6、Command对象

             它用来执行SQL语句,执行的结果由DataReader和DataAdapter填充到DataSet中,这样就完成 数据库数据操作的工作 。

vb.net 如何访问数据接口

7、注1:CommandType有三个:

                    Text,说明是一个SQL语句,这是默认值,不设置时就是它。

                     TableDirect,一个要操作的数据表的名

                     StoredProcedure,一个存储过程。

             注2:构造函数有四个,用第三个较多。

           2.1、Command的构造函数,

            就是上面的四个方法,这个是重点。

            2.2、ExecuteReader方法

            通过DataReader类型的对象,应用程序可获得执行SQL命令后的结果集。

            这个方法有两种定义:

            一是ExecuteReader() :不带参数,直接返回一个DataReader结果集;

           二是ExecuteReader(CommandBehavior   behavior):根据参数Behavior取值类型,决定DataReader类型。

                   如果behavior是CommandBehavior.SingleRow,则说明返回的ExecuteReader只是结果集中的第一条数据;

                   如果behavior是CommandBehavior.SingleResult,则说明只返回在查询结果中多个表里的第一个。

                   如果behavior是CommandBehavior.SequentialAccess,则说明对于返回的ExecuteReader对象只能顺序

                               读取它包含的列。一旦读过某列,就不能返回再次读取了,以方便性为代价换取读取数据时的高效率。

             无论何结果,ExecuteReader方法返回一个DataReader对象,该对象是一个仅向向的只读数据流,所以主要用来执行

                       基本SQL查询,要求SQL语句返回记录集。

             2.2例一:ExecuteReader。

             用executeReader返回一个DataReader,然后用它来填充(加载到)另一个对象DataTable中,最后DataTable直接绑定到控件上。

vb.net 如何访问数据接口

vb.net 如何访问数据接口

8、2.2例二:利用BindingSource来绑定

           前面用DataTable绑定数据,下面用BindingSource来绑定。界面一样,代码变化几句:

vb.net 如何访问数据接口

9、2.3 ExecuteSaclar方法

              Scalar,标量,是一个值。一个结果集可能有多个记录,每个记录可能有多个列值。因此,

              该方法返回的是首行首列的一个值,其它值忽略。主要用于那些聚合运算,比如求有多少个记录,总计是多少,等等。

vb.net 如何访问数据接口

10、 2.4 ExecuteNonQuery方法

                即,非查询命令。主要用来执行insert,update,delete和那些没有返回结果集的SQL语句,并返回执行命令后影响的行数。

                 如果insert,update对应的记录不存在,则返回0;如果出错,则返回-1.

                 注意:因为这个用户不知道成功与否,所以要加入一些提示或再次显示原数据库,以便了解执行情况。

                 前面几节有这个大量的例子,不再列出。

                   2.5 ADO.net事务处理。

                   前面说了存储过程,存储过程就是一个批处理。

                   事务也是一个批处理过程,只不过加强版,即要么全部都成功执行,要么全部失败。(SQL自动会控制它)

                   所以事务有两个作用:

                             一致性:同时进行的查询和更新彼此不会发生冲突,其它用户不会看到发生了变化但尚未提交的数据;

                             可恢复性:一旦故障或失败,数据库会自动地完全恢复未完成的事务(Rollback)。

                  ADO.net中,使用Connection和Transaction对象来控制事务,事务顺序包括:

                               一、调用Connecton对象的BeginTransaction方法来标记事务的开始。

                               二、将Transaction对象分配给要执行的Command的Transaction属性;

                               三、执行所需的命令;

                               四、调用Transaction对象的Commit方法来完成事务,或调用RollBack方法来取消事务。

                   ADO.net事务处理的优点:简单、运行速度快、独立于数据库。

                                                      缺点:不能跨多个数据库连接。

                                                                  事务执行建立在数据库的连接层上,所以需要在事务过程中一直保持数据库连接。

                    编程流程:

                                   事务开始:Connection对象的BeginTransaction()声明开始

                                   提交事务:即去执行,用Transaction对象的Commit()方法来提交  

                                   回滚事务:即事务失败后的全部恢复,用Transaction对象的RollBack()方法来回滚事务。

                       

                      2.5例:事务提交。

                     从 这个例子中,可以看到事务是多个SQL语句提交执行(批处理),当如果有一条不成功,则全部恢复(不管以前是否成功)。

vb.net 如何访问数据接口

vb.net 如何访问数据接口

11、DataReader对象

                首先说明:DataReader不能实例化,即不能用New。它只能由Command对象ExecuteReader()方法来创建,所以2.2例中没用NEw

           

                 DataReader对象提供向前的、只读数据,所以只能依次来读:

                             DataReader的Read(),提供下一条记录的读取,返回值是布尔值,为真执行成功,为假说明下一条无记录。

                             这些记录是不能修改的。而DataSet因为是离线数据集,在本地内存中缓存,所以是可以任意修改的。

                  DataReader从数据库中检索只读数据流,存储在客户端的网络缓存当中。在内存当中只存储一行,所以开销小,速度快。

                  由于数据不在内存中缓存,所以在检索大量数据时,DataReader是一种较好的选择。

                  DataRader还是一个霸王,具有独占性,在已经打开DataReader的情况下,将不能对Connection进行任何操作,所以用完了它就

                  应及时调用Close()方法关闭。

                  通过Command对象返回多个结果集,并且通过DataReader对象NextResult()方法来使用。

                  再次强调它不能New,只能由Command对象的ExecuteReader()方法来创建 。

                  创建后,读取DataReader对象中的数据有两种方法:

                             一通过和DataGridView等数据控件绑定,直接输出;

                             二利用循环将数据取出。(即Read()方法进行循环读取)。

                  例子:用DataReader对象通过循环读取多条记录。

vb.net 如何访问数据接口

vb.net 如何访问数据接口

12、DataAdapter

                 DataAdapter数据适配器,它就是一个搬运工:从数据源搬运到本地内存中以便来填充DataSet;或者从本地内中数据搬运回到数据源中。

                这两者的数据可以是相同,也可是不同,DataAdapter会自动匹配,发挥“适配”的作用。

                从数据源到本地内存,然后再填充就用Fill()方法。

                从本地内存到数据源,进行数据库的更新用Update()方法。

                                           DataAdapter对象属性

属   性

说   明

DeleteCommand

获取或设置一个语句或存储过程,以从数据集删除记录

InsertCommand

获取或设置一个语句或存储过程,以在数据源中插入新记录

SelectCommand

获取或设置一个语句或存储过程,用于在数据源中选择记录

UpdateBatchSize

获取或设置每次到服务器的往返过程中处理的行数

UpdateCommand

获取或设置一个语句或存储过程,用于更新数据源中的记录

                                             DataAdapter方法

方法                         说明Dispose                 删除该对象Fill                            用从源数据读取的数据行填充至DataSet对象中FillSchema            将一个DataTable加入到指定的DataSet中,并配置表的模式GetFillParameters 返回一个用于SELECT命令的DataParameter对象组成的数组Update                       在DataSet对象中的数据有所改动后更新数据源。

              

                4.1   DataAdapter对象的构造函数

              搬运工就是双面间谍,要么向本机的DataSet填充数据,要么就向另一个方向的数据库更新数据。

                                                                     SqlDataAdapter类的构造函数

SqlDataAdapter()                                                                                                        不带参数, 创建SqlDataAdapter对象SqlDataAdapter(SqlCommand selectCommand)                                           selectCommand:指定新创建对象的SelectCommand属性

                                                                                                                                    用参数selectCommand设置其Select Command属性

SqlDataAdapter(string selectCommandText,SqlConnection selectConnection)          selectCommandText:指定新创建对象的SelectCommand属性值;

                                                                                                                                                           selectConnection:指定连接对象 

                                                                                                                                                           用参数selectCommandText设置其Select Command属性值,

                                                                                                                                                            并设置其连接对象是selectConnectionSqlDataAdapter(string selectCommandText,String selectConnectionString)             selectCommandText:指定新创建对象的SelectCommand属性值;

                                                                                                                                                       selectConnectionString:指定新创建对象的连接字符串

                                                                                                                                                       将参数selectCommandText设置为Select Command属性值,

                                                                                                                                                        其连接字符串是selectConnectionString

               构造函数可以不带参数,或者带1,2,3个参数,由参数可以看到cmd有时超出自己的范围,跑到Connection的功能上去了。

          

                 4.2 DataAdapter对象的Fill()方法

                 这是搬运工填充本地内存的情况。

                 调用Fill()方法时,DataAdapter将向数据存储区传输一条Select语句,主要用来填充或刷新DataSet,返回值是影响DataSet的行数。

                    

                                                          Fill()方法如下:

int Fill (DataSet dataset)                       dataset:需要更新的DataSet                                                                  根据匹配的数据源,添加或更新参数所指定的DataSet,返回值是影响的行数int Fill (DataSet dataset, string srcTable)             dataset:需要更新的DataSet;

                                                                                       srcTable:填充DataSet的dataTable名(就是别名,用户自己命名一个,可以与原表相同)

                                                                                       根据dataTable名填充DataSet

                 例子:前面已经有了,不再列出,参见:http://blog.csdn.net/dzweather/article/details/8564039

            

                  4.3 DataAdapter的Update()方法   

                 这是搬运工更新服务器数据库的情况。

                调用Update()方法时,DataAdapter将检查参数DataSet每一行的RowState属性,根据RowState属性来检查DataSet里

                 的每一行是否改变及改变的类型,并依次执行所需的Insert,Update,Delete语句,再将改变提交到数据库中,同时

                 返回影响的DataSet的行数据。

                 例子:下面用一个添加一行记录,同时更新DataSet和数据库。

                 里面用到了DataRow,这个用于添加一个新行NewRow,然后给新行加值

vb.net 如何访问数据接口

vb.net 如何访问数据接口

vb.net 如何访问数据接口

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢