1.数据库加载驱动和操作接口 IDbProvider

代码

 1 /**
 2  * 
 3  * 2009-4-22
 4  * 
 5  * 
 6  * 数据库操作加载驱动接口,
 7  * 提供了数据库操作的各种命令
 8  * */
 9 using System;
10 using System.Collections.Generic;
11 using System.Linq;
12 using System.Text;
13 using System.Data;
14 
15 namespace CommonData.Data
16 {
17     public interface IDbProvider:IDisposable
18     {
19         string ConnectionString { get; set; }
20 
21         IDbConnection Connection { get; set; }
22 
23         IDbCommand Command { get; set; }
24 
25         IDbDataAdapter Adapter { get; set; }
26 
27         void Open();
28 
29         void Close();
30 
31         //--------------------控制事务
32         void BeginTransaction();
33 
34         void RollBack();
35 
36         void Commit();
37 
38 
39         //-------------------数据提供加载驱动
40         IDbProvider CreateInstance();
41     }
42 }
43 

  该接口封装了数据库连接语句,数据库连接对象,数据库操作命令,数据库适配器几个属性,并且都是使用的接口类型。在现实的过程中 因为数据库选择的不同,会导致后面接口实现类的代码不同,如果程序都是使用接口来操作,就不用担心数据库的修改而大量更改代码,只需 要修改实现类的操作过程就可以了。

  这个接口还提供了几个方法:

  void Open(); 这个用于打开数据库的连接
  void Close(); 这个用于关闭数据库连接

  数据库操作永远不可能只有一个原子操作,很多情况下都需要一连 串的原子操作组合,这个时候我们就必须考虑事务操作情况。下面的方法可以提供相应的事务操作
  void BeginTransaction();

   void RollBack();

  void Commit();

2.数据库加载驱动和操作实现类SqlProvider

代码

  1 /**
  2  * 
  3  * 2009-4-22
  4  * 
  5  * 
  6  * 数据提供加载驱动类
  7  * */
  8 using System;
  9 using System.Collections.Generic;
 10 using System.Linq;
 11 using System.Text;
 12 using System.Data;
 13 using System.Data.SqlClient;
 14 using CommonData.Data;
 15 
 16 namespace CommonData.Data
 17 {
 18     public class SqlProvider:IDbProvider
 19     {
 20         private string connectionString = "server=.\\SQLEXPRESS;database=Fengling;Integrated Security=true";
 21         /// <summary>
 22         /// 数据库连接字符串
 23         /// </summary>
 24         public string ConnectionString
 25         {
 26             get 
 27             {
 28                 if (connectionString == null)
 29                 {
 30                    & nbsp;connectionString = "server=.\\SQLEXPRESS;database=Fengling;Integrated Security=true";
 31                 }
 32                 return connectionString;
 33             }
 34             set
 35             {
 36                 connectionString&nb sp;= value;
 37             }
 38         }
 39 
 40         private IDbConnection connection=null;
 41         /// <summary>
 42         /// 数据库连接对象
 43         /// </summary>
 44         public IDbConnection Connection
 45         {
 46             get
 47             {
 48                 if (connection == null)
 49                 {
 50                    & nbsp;connection = new SqlConnection(connectionString);
 51                 }
 52                 return connection;
 53             }
 54             set
 55             {
 56                 connection = value;
 57             }
 58         }
 59 
 60         private IDbCommand command = null;
 61         /// <summary>
 62         /// 数据库命令操作对象
 63         /// </summary>
 64         public IDbCommand Command
 65         {
 66             get
 67             {
 68                 if (command == null)
 69                 {
 70                    & nbsp;command = new SqlCommand();
 71                    & nbsp;command.Connection = connection;
 72                 }
 73                 return command;
 74             }
 75             set
 76             {
 77                 command = value;
 78             }
 79         }
 80 
 81         private IDbDataAdapter adapter = null;
 82         /// <summary>
 83         /// 数据库适配器对象
 84         /// </summary>
 85         public IDbDataAdapter Adapter
 86         {
 87             get
 88             {
 89                 if (adapter == null)
 90                 {
 91                    & nbsp;adapter = new SqlDataAdapter(command as SqlCommand);
 92                 }
 93                 return adapter;
 94             }
 95             set
 96             {
 97                 adapter = value;
 98             }
 99         }
100 
101         /// <summary>
102         /// 数据库事务对象
103         /// </summary>
104         private IDbTransaction transaction = null;
105         
106         /// <summary>
107         /// 打开数据库连接
108         /// </summary>
109         public void Open()
110         {
111             if (connection != null)
112             {
113                 connection.Open ();
114             }
115         }
116 
117         /// <summary>
118         /// 关闭数据库连接
119         /// </summary>
120         public void Close()
121         {
122             if (connection != null)
123             {
124                 connection.Close ();
125             }
126         }
127 
128         /// <summary>
129         /// 开始事务
130         /// </summary>
131         public void BeginTransaction()
132         {
133             transaction = connection.BeginTransaction();
134             command.Transaction = transaction;
135         }
136 
137         /// <summary>
138         /// 事务回滚
139         /// </summary>
140         public void RollBack()
141         {
142             if (transaction != null)
143             {
144                 transaction.Rollbac k();
145                 command.Transaction  = null;
146                 transaction.Dispose ();
147             }
148         }
149 
150         /// <summary>
151         /// 事务提交
152         /// </summary>
153         public void Commit()
154         {
155             if (transaction != null)
156             {
157                 transaction.Commit ();
158                 command.Transaction  = null;
159                 transaction.Dispose ();
160             }
161         }
162 
163         /// <summary>
164         /// 创建数据库加载驱动
165         /// </summary>
166         /// <returns></returns>
167         public IDbProvider CreateInstance()
168         {
169             return new SqlProvider();
170         }
171 
172         /// <summary>
173         /// 释放内存空间
174         /// </summary>
175         public void Dispose()
176         {
177             GC.SuppressFinalize(this);
178         }
179     }
180 }
181 

  SqlProvider 实现了接口IDbProvider,这里采用的是连接sql Server 数据库。其中数据库连接语句可以配置在Web.config中,这里 只是做测试用。至于实现接口的过程不必再讲解。

ORM映射框架总结--数据操作(五)相关推荐

  1. ORM映射框架总结--数据库操作库(精修版)

    1.       ORM数据库操作原理 前面已经介绍过了个人ORM映射框架中的三个核心库: 实体-数据库 映射特性关系: http://www.cnblogs.com/qingyuan/archive ...

  2. ORM 系列:一个个人ORM映射框架

    转载:http://www.cnblogs.com/qingyuan/category/239086.html 个人ORM映射框架中的三个核心库: 实体-数据库 映射特性关系: http://www. ...

  3. ODB——基于c++的ORM映射框架尝试(安装)

    这篇博客应该是和之前的重拾cgi一起的.当时为了模仿java的web框架,从页面的模板,到数据库的ORM,都找个对应的库来进行尝试.数据库用的就是ODB,官方网站是http://www.codesyn ...

  4. Java注解初体验(简单ORM映射框架)

    2019独角兽企业重金招聘Python工程师标准>>> Java学了很久了,始终没有深入学习过注解反射这些高级特性,晚上花时间研究了一下,其实还挺有意思的,貌似也搞清楚了像Hiber ...

  5. ORM映射框架总结--SQL 语句生成组件

    1.       SQL 语句生成组建 之前说过ORM框架中有一个非常重要的组件,那就是SQL语句生成组件.SQL语句生成组件,顾名思义就是用于生成sql语句的一个组件.之前的Attribute 是用 ...

  6. ODB——基于c++的ORM映射框架尝试(使用)

    2.使用 首先,需要定义一个对象,用来和数据库字段对应: [cce lang="cpp"] #ifndef VOLUME_H #define VOLUME_H #include & ...

  7. python 用元类 type 实现对数据库的ORM 映射

    python 实现对数据库的ORM 映射 如果使用pymysql 操作数据库 不借助框架的话,频繁写sql语句, 的确比较麻烦 这里借助 type 元类 对 数据表类实现了 与mysql之间的 映射 ...

  8. Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图实体类映射 下一篇:Farseer.net轻量级ORM开源 ...

  9. 使用iBatis数据映射框架吧

    如果您厌烦了编写 JDBC,可以考虑使用另一个功能丰富的数据映射框架 iBatis,它能够实现大多数同样的好处,并且只需要编写非常少的代码. 引言 对象关系映射程序(Object Relational ...

最新文章

  1. 一生都要Debug,我们最需要掌握哪些硬技能?
  2. VMD_test matlab仿真
  3. PostGIS之路——几何对象编辑(二)
  4. bzoj2561 最小生成树
  5. sas 文件传输 本地 服务器,SLIM SAS SFF-8654服务器转换线让传输更容易!
  6. echarts 环形图中间添加html,echarts配置一个中间显示文字的环形图
  7. C#将Access数据库导出为JSON
  8. 陆上物探测量基本理论之一---高程
  9. iphone升级ios7之后出现蓝框框一直跳的问题
  10. 魔方Newlife.Cube权限系统的使用及模版覆盖详解
  11. html超链接 鼠标效果,7种鼠标滑过超链接动画特效
  12. 无监督学习 半监督学习 #博学谷IT学习技术支持#
  13. Android中Home键的监听和拦截
  14. chrome扩展程序_如何实施Chrome扩展程序
  15. Java对List集合中的对象的某个中文字段按照拼音首字母进行排序
  16. luogu P3527 [POI2011]MET-Meteors
  17. 特斯拉DTC运营解读
  18. JsonParseException: Unexpected character (‘sss‘ (code xxx)): was expecting a colon to separ
  19. vop破芙工艺-注意事项
  20. 为什么不建议你使用Mybatis-plus

热门文章

  1. [开学季]“当高校遇到大数据”濮阳职业技术学院阿里云大数据应用学院举行阿里云开学第一课...
  2. jackson 实体转json 为NULL或者为空不参加序列化
  3. Linux之文件管理命令
  4. 学习如何看懂SQL Server执行计划(三)——连接查询篇
  5. 恐怖的shell命令
  6. STP 简介----生成树算法
  7. LeetCode--014--最长公共前缀(java)
  8. vue开发使用vue-particles如何兼容IE11?
  9. SQL Server通过web方式进行远程维护,管理
  10. 《Web接口开发与自动化测试 -- 基于Python语言》 ---前言