ORM映射框架总结--数据操作(五)

简介: 1.数据库加载驱动和操作接口 IDbProvider 代码  1 /** 2  *  3  * 2009-4-22 4  *  5  *  6  * 数据库操作加载驱动接口,  7  * 提供了数据库操作的各种命令  8  * */ 9 using System;10 using System.

 

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中,这里 只是做测试用。至于实现接口的过程不必再讲解。

相关文章
|
6月前
|
SQL Java 数据库连接
myabtis中为什么说 MyBatis 是半自动 ORM 映射工具?它与全自动的区别在哪里
myabtis中为什么说 MyBatis 是半自动 ORM 映射工具?它与全自动的区别在哪里
|
SQL 关系型数据库 API
ORM对象关系数据库映射
ORM对象关系数据库映射
ORM对象关系数据库映射
|
存储 SQL 数据库
ORM映射框架总结--数据操作(七)
2. 数据库操作实现类 SqlHelper 代码 /** *  * 2009-4-22 *  *  * 数据库操作的公共类 * */using System;using System.Collections.
697 0
|
SQL
ORM映射框架总结--数据操作(四)
1.BaseEntityHelper 解析实体类特性 代码   1 /**  2  *   3  * 2009-4-17  4  *   5  *   6  * 字段的特性  7  * */  8 using System;  9 using System.
784 0
|
SQL 存储 数据库
ORM映射框架总结--数据操作(六)
1. 数据库操作接口 IDbHelper 代码 /** *  * 2009-4-22 *  *  * 提供各种数据库操作方法以及实体类操作方法 * */using System;using System.
652 0
|
SQL 存储 .NET
ORM映射框架总结--数据库操作库(精修版)
1.       ORM数据库操作原理 前面已经介绍过了个人ORM映射框架中的三个核心库: 实体—数据库 映射特性关系: http://www.cnblogs.com/qingyuan/archive/2010/04/02/1702998.
1395 0
|
SQL 安全 数据库
ORM映射框架总结--代码生成器
年前发布了一些文章,是关于.NET数据操作(点击查看)的。刚开始学习编程的时候,总感觉Java中的Hibernate 功能好强大,现在也不可否认它的确强大,特别是它在数据关系处理上,却是那样的让人称叹。
1264 0
|
Web App开发
ORM映射框架总结--Excel 操作
  在很多时候,我们需要将查询的数据做成报表统计,然后生成Excel文档格式的。再此提供了将DataTable 数据导出excel 的方法   代码   1 /**  2  *   3  * 2009-5-2  4  *   5  *   6  * 将DataTable导出为excel文件  7  * */  8 using System;  9 using System.
903 0
|
移动开发 监控 .NET
ORM映射框架总结--日志处理
  在我们做项目的过程中,日志跟踪异常是非常必要的,当程序发布到服务器上时,如果出现异常直接抛出给用户这是非常不友好的。对于不懂程序的用户来说,这回让人感觉莫名其妙,对于那些程序高手,可能就是攻破这个网站的关键。
739 0