一、接口种类:6种:
1、ODBC,面向C/C++。
2、DAO, 面向VB,操作ACCEss
3、RDO,上面的加强型
4、OLE DB
5、ADO, 对OLE DB的加强型
6、ADO.net, ADO的加强型。
二、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
三、ADO.net的五个核心对象
这个说五个是:
Connection对象负责连接数据库
DataReader对象负责读取数据库的数据
DataAdapter对象负责在Command对象执行完sql语句后生成并填充DataSet和DataTable。
DataSet对象负责存取和更新数据。
1、Connection对象
表示一个数据源的单个连接。
例一:连接Access的例子:
例二:连接sqlserver的例子:
2、Command对象
它用来执行sql语句,执行的结果由DataReader和DataAdapter填充到DataSet中,这样就完成 数据库数据操作的工作 。
注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对象,该对象是一个仅向向的只读数据流,所以主要用来执行
2.2例一:ExecuteReader。
用executeReader返回一个DataReader,然后用它来填充(加载到)另一个对象DataTable中,最后DataTable直接绑定到控件上。
- ImportsSystem.Data.sqlClient
- PublicClassForm1
- PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.Click
- DimcnAsNewsqlConnection("DataSource=.;InitialCatalog=Sales;IntegratedSecurity=False;UserID=sa;Password=123456;")
- cn.Open()
- DimcmdAsNewsqlCommand("select*fromgrade",cn)
- DimdrAssqlDataReader'不能new.应用程序不直接创建IDataReader接口的实例,而是创建继承IDataReader的类的实例
- dr=cmd.ExecuteReader()
- DimdtAsNewDataTable
- dt.Load(dr)
- DataGridView1.DataSource=dt
- cn.Close()
- EndSub
- EndClass
2.2例二:利用BindingSource来绑定
前面用DataTable绑定数据,下面用BindingSource来绑定。界面一样,代码变化几句:
- '前面用DataTable绑定数据,下面用BindingSource来绑定
- DimbsAsNewBindingSource
- bs.DataSource=dr
- DataGridView1.DataSource=bs
- cn.Close()
- EndSub
- EndClass