首页 > Web开发 > 详细

ADO.NET 连接方式进行数据访问

时间:2017-08-30 00:42:35      阅读:351      评论:0      收藏:0      [点我收藏+]

1. 连接环境简介

1.1. 连接环境的特点
 ? 连接环境是指用户在这种环境下始终保持与数据源的连接
 ? 优点
  –环境易于实施安全控制
  – 同步问题易于控制
 ? 数据实时性优于其他环境
 ? 缺点
  – 必须保持持续的网络连接
  – 扩展性差

1.2. 连接环境下的对象模型
 ? XxxConnection
  – 建立与数据源的连接,如SqlConnection 用于建立与Microsoft SQLServer? 的连接,OleDbConnection用于建立与任何支持OLEDB 的数据源的连接
 ? XxxCommand
  – 执行数据源的命令,如 SqlCommand 可以调用一个 Microsoft SQL Server? 的存储过程,XxxCommand 对象的ExecuteReader 方法可以
   返回一个XxxDataReader 对象
 ? XxxDataReader
  – 以只读的、前向的方式,以流的形式读取数据,例如SqlDataReader 可以读取Microsoft SQL Server? 中的数据
  – XxxDataReader 由 XxxCommand(通常是SELECT命令)的 ExecuteReader 方法返回
 ? XxxXmlReader
  – 提供以快速的、无缓存的、前向的方式读取XML数据

1.3. 连接到数据源

定义连接
 ? XxxConnection (如SqlConnection)
 ? 连接字符串是包含数据连接参数的一个字符串,用于定义对数据源的连接
 ? 连接字符串中包含的参数
 ? 连接字符串的重要参数:
  – Provider 连接所用的数据提供程序的种类
  – Data Source 要连接的 SQL Server 的名称
  – Initial Catalog 要连接的数据库的名称
  – Integrated Security 使用Windows 验证确定用户权限
  – User ID/Password SQL Server登录名称和密码
  – Persist Security Info 连接后是否传送安全信息

1.4. 打开和关闭连接
 ? 打开连接
  – XxxConnection.Open()
 ? 关闭连接
  – XxxConnection.Close()
 ? 退出连接池
  – XxxConnection.Dispose()

2. 创建命令

2.1. Command 对象
 ? Command 对象是一个SQL语句或者存储过程的引用
 ? Command 对象可以直接被执行
 ? 属性
  – Name:可选属性,可以用于引用该对象
  – Connection:连接对象的引用,与数据库交互
  – CommandType:Text、StoredProcedure、DirectTable 的一种
  – CommandText:SQL 语句或者存储过程的名字
  – Parameters :可以有零个或多个参数

2.2. Command 对象的重要方法
 ? ExecuteScalar
  –返回一个惟一的值
 ? ExecuteNonQuery
  –用于更新数据库或改变数据库结构,返回被影响的行数
 ? ExecuteReader
  –返回数据行的集合
 ? ExecuteXmlReader (仅限于SqlCommand)
  –返回一个 XML 的结果集

3. 返回单个值

3.1. 返回单个值
 ? 使用ExecuteScalar()方法
 ? ADO.NET 比 ADO 效率更高,返回整个记录集
 ? 示例
  – 一个特定产品的库存数量
  – 有多少个产品
  –使用 COUNT、MAX、MIN、AVERAGE

3.2. DEMO
 执行返回单个值的Command 命令

4. 返回数据行

 ? 使用ExecuteReader()方法
  –返回一个 DataReader
  – 例如: SqlDataReader、OleDbDataReader
 ? DataReader
  – 只读、前向,数据行的流

5. 使用 DataReader 获取数据
 ? Read 方法
  – 得到下一行
  – 如果还有后续数据行存在,返回True;反之返回False
 ? Item 属性
  – aReader[“aColumnName”] 或aReader[columnPosition]
 ? GetXxx 方法,例如: GetString、 GetInt32
  – GetString[ColumnPosition](以基数零开始)
 ? GetValues 方法
  – 一次返回当前行所有的列,高效
 ? IsDbNull 方法
  – 用于测试是否返回NULL
 ? Close 方法
  – Read 方法返回 False 时,应该调用 Close 方法关闭 DataReader,释放连接 

6. 返回多个结果集
 ? 一个存储过程可能包含多条 SQL 语句
  –将相关的任务分组
  – 封装业务逻辑
 ? 如果一个存储过程返回了多个结果集
  – 调用NextResult 移到下一个结果集
 ? 判断有多少数据行被一个存储过程影响
  –使用 RecordsAffected 属性 

7. 不返回值
 ? 使用ExecuteNonQuery()方法
 ? 执行DDL和DCL语句
  – CREATE/ALTER/DROP
  – GRANT/DENY/REVOKE
 ? 执行其它DML语句
  – INSERT/UPDATE/DELETE

8. Command 命令的参数
 ? 介绍
  – SQL 语句和存储过程可以有输入输出参数以及返回值
  – Command对象参数用来设置或者返回这些参数
  – SqlParameter、OleDbParameter

 ? ParameterName

  – 命令参数的名称,例如@CatId
 ? DbTtype
  – 连接到数据库的类型,有 SqlType 和 OleDbType
 ? Direction
  – ParameterDirection 枚举集指定的值,包括:
 ? ParameterDirection.Input(输入)
 ? ParameterDirection.InputOutput(输入输出)
 ? ParameterDirection.Output(输出)
 ? ParameterDirection.ReturnValue(返回值)

9. 事务
 ? 事务是一系列相互关联的任务,作为一个整体成功提交或者失败(提交或者回滚)
 ? ACID
  – Atomicity (原子):事务或者全部提交,或者全不提交
  – Consistency(一致):事务保证了数据的完整性
  – Isolation(分离):事务处理了数据操作的并发性
  – Durability(持续):即使在事务结束后发生系统崩溃等灾难性情况,事务涉及的数据操作也将正常保存

9.2. 使用 T-SQL 实现事务
 ? SQL事务语句
  – BEGIN TRAN、COMMIT TRAN、ROLLBACK TRAN
? 代码示例

BEGIN TRAN
DECLARE @orderDetailsError int, @productError int
DELETE FROM "Order Details" WHERE ProductID=42
SELECT @orderDetailsError = @@ERROR
DELETE FROM Products WHERE ProductID=42
SELECT @productError = @@ERROR
IF @orderDetailsError = 0 AND @productError = 0
COMMIT TRAN
ELSE
ROLLBACK TRAN

 

9.3. 使用 ADO.NET 管理事务
 ? XxxConnection – 例如SqlConnection
  – BeginTransaction
 ? XxxTransaction – 例如SqlTransaction
  – Commit
  – Rollback
 ? 隔离级别

ADO.NET 连接方式进行数据访问

原文:http://www.cnblogs.com/lxh168/p/7450884.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!