ADO.NET(一):连接层
ADO.NET的数据提供程序
ADO.NET没有提供单一的方式来和不同的DBMS进行通信,而是提供了多种数据提供程序,每种为某个DBMS进行优化。System.Data.Common命名空间以及System.Data中是一些核心公共对象:他们的基类(System.Data.Common)以及接口(System.Data):
对象那个 |
基类 |
实现的接口 |
作用 |
Connection |
DbConnection |
IDbConnection |
连接和断开数据源,提供了相关事务的访问 |
Command |
DbCommand |
IDbCommand |
代表SQL查询语句或存储过程名,同样提供了相关数据读取对象的访问 |
DataReader |
DbDataReader |
IDbDataReader、IDataRecord |
提供只读只向前形式的数据访问 |
DataAdapter |
DbDataAdapter |
IDataAdapter、ID DataAdapter |
再数据库和调用者之间传递DataSet,内置四个命令对象来实现数据库的查询、插入、修改和删除 |
Parameter |
DbParameter |
IDataParameter、IDbDataParameter |
再参数化查询中表示参数 |
Transaction |
DbTransaction |
IDbTransaction |
实现数据库事务 |
SqlConnection和OracleConnection、OdbcConnection和MySqlConnection,都是从基类DbConnection继承,并且实现IDbConnection接口。
使用接口抽象数据提供程序
enum DataProvider
{ SqlServer, OleDb, Odbc, Oracle, None }
使用连接对象
典型的连接字符串如下:
Initial Catalog表示要建立连接的数据库,Data Source表示维护数据库的机器名,Integrated Security(=SSPI等价于true)表示使用当前Windows账户平局为用户身份验证。
在输入字符串之后,可以调用open()来建立和DBMS之间的联系,除此之外,还有另外一些核心成员:
BeginTransaction |
开始数据库事务。 |
ChangeDatabase |
为打开的连接更改当前数据库。 |
ConnectionTimeout |
获取在建立连接时终止尝试并生成错误之前所等待的时间。 |
Database |
在连接打开之后获取当前数据库的名称,或者在连接打开之前获取连接字符串中指定的数据库名。 |
DataSource |
获取要连接的数据库服务器的名称。 |
GetSchema |
返回此 DbConnection 的数据源的架构信息的DataSet |
State |
获取描述连接状态的字符串,ConnectionState枚举形式。 |
ConnectionState 枚举中只有open和Close时有效的,其他成员会在将来保留使用。
ConnectionStringBuilder
以编程方式使用连接字符串不是很容易维护,这时候就可以使用ConnectionStringBuilder。(可以使用它来修改相关属性)
使用命令对象
SqlCommand类型(继承自DbCommand)是SQL查询、表名和存储过程的一种面向对象的表示方法。可以使用CommandType属性来制定命令的类型,它的值由CommandType枚举定义:
使用数据读取器
DbDataReader是从数据源获取信息最简单也是快速的方法,它只读向前的数据流,并且一次返回一条记录。可以通过command的ExecuteReader()方法来获取数据读取连接对象。对于多个结果集,可以使用DataReader的NextResult()方法。