最近看一个视频当中提到了很多关于数据库访问,连接,操作的对象,都不知道什么意思,于是就上网查了查。看了几集关于数据库访问方面的视频。下边跟大家分享一下。
现在大家用的连接数据库的方式不外乎一下几种。
1. DB-Library是SQL SERVER提供的一系列的操作数据库的函数库,是C访问数据库的接口。
2. DAO是指ActiveX Data Objects。ADO是VB6推荐操作数据库的方式。
3. ODBC最先出来,是用来连接oracle、sqlserver、access等数据库的一种接口标准(后来随着各厂商的扩充,也就都不标准了),各数据库提供实现ODBC的“驱动程序”。
4.OLE DB是微软“发明”的,用来淘汰ODBC的,OLE
DB不光可以连接各种数据库,还可以连接exchange、活动目录、甚至操作系统文件目录等各种数据库源(也需要分别使用不同的“驱动程序”)。
5.ADO也是微软的,是用来淘汰早起微软的RDO、DAO的(ADO可以做RDO、DAO能做的所有事),ADO在上层,通过下面的ODBC或者OLE
DB来访问数据源(注意不是数据库,因为可访问范围包括活动目录等各种数据)。不过微软目前的ODBC实际是通过OLE DB访问数据源的。
层次关系:
应用程序 -> ADO -> ODBC -> OLE DB ->数据源
或者
用程序 -> ADO -> OLE DB ->数据源
ADO是一个对象模型,他将OLE DB
提空的API函数进行封装,然后形成一个个的类,以便开发者使用。ADO对象的核心模型如下。基本上所有的操作都要与这三个类有关。
ADO .NET 是基于.NET
框架结构,面向分布式和以XML数据格式为核心的数据访问技术。ADO.NET对象模型包含了两种最基本的组件:DataSet 和 .NET data Provider;
数据提供程序直接与数据库打交道,而dataset与xml打交道。
在数据提供程序中有connection, command,datareader
,和dataadapter这四个对象。每个对象具有不同的作用。下边分别介绍一下每个对象的作用。
connection对象
Connection对象,用于数据库连接,任何对数据源的操作都需要首先建立一个连接对象。针对不同的数据源,可以使用 SqlConnection , OleDbConnection, OdbcConnection, OracleConnection ,他们都实现了IDbConnection
接口
以创建sql server
数据库的连接为例:(下边的举例,全部用sql server数据库,用c#代码)在程序当中用代码创建:有两种方式
Command 对象
Command对象用于完成对数据源的各种操作,包括查询,插入,删除,更新等,可以使用sql语句,也可以使用存储过程。
.NET同样提空了四种command对象分别是SqlCommand, OleDbCommand, OdbcCommand,OracleCommand对象,根据访问的数据源或者Connection对象的不同,选择相应的Command对象。
Command的对象的使用方法:
实例化一个command对象,然后为command对象的connection属性关联一个connect对象,设置Commant的属性,最后执行命令。
线面分别对command对象的每个属性进行讲解,首先是如何实例化command对象
然后为command的connection属性赋值,
设置Command对象的commandtype属性,即为要执行的语句,或者存储过程
最后为执行命令语句,有三种,分别为
有时还要对command的parameter 属性设置,用来添加参数,
当然是用parameter还有一个很好的作用那就是防止sql注入,详情请参见http://zhidao.baidu.com/link?url=ewuneV4Ni0ToWYDg7YA9xuWSPFx5x2RQdICYft8qCwSadI_bkK4GytuaisvXu_QdkSFnSZfoMC6l5pKDlX_dBq
Datareader对象
Datareader对象不能关使用new关键字创建。但可以使用ExecuteReader()方法创建。
DataReader是一行一行的读取记录的。当记录中有数据时Read()返回TRUE,当到记录集底部时返回FALSE。
重要属性:
FieldCount:获取当前行中的列数。
HasRows:获取一个值,该值指示SqlDataReader是否包含一行或多行。
NextResul:当执行的是sql存储程序,或是可返回多个结果集的批处理sql语句时,该方法将当前行指针移到下一个结果集(该操作将当前行指针从第一行的一个行集移到下一个行集)。
重要方法:
GetInt16(),GetString(),GetDataTime()使用这些方法可以读取行中某列的值,并以相应的.Net类型返回。
GetValue():可以读取行中某列的值,不过返回的是object类型的值。
GetName():返回行中某列的列名。
GetInt16(),GetString(),GetDataTime()使用这些方法可以读取行中某列的值,并以相应的.Net类型返回。
GetValue():可以读取行中某列的值,不过返回的是object类型的值。
GetName():返回行中某列的列名。
想要对数据库进行操作,首先要建立数据库连接,然后设置查询条件,或操作语句来对command对象的commandtext属性进行赋值,然后执行sql语句,或者存储过程。最后获取查询结果。
.NET 的数据库操作,才刚刚学,有什么不对的地方还请不吝赐教。