代码改变世界

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

2010-01-02 13:50  贺臣  阅读(1228)  评论(0编辑  收藏  举报

 

1. 数据库操作接口 IDbHelper

代码
/**
 * 
 * 2009-4-22
 * 
 * 
 * 提供各种数据库操作方法以及实体类操作方法
 * 
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CommonData.Model;
using System.Data;

namespace CommonData.Data
{
    
public interface IDbHelper:IDisposable
    {
        
//对数据库进行操作

        
int ExecuteNonQuery(IDbProvider provider,string sqlString);

        
int ExecuteNonQuery(IDbProvider provider, string sqlString, bool isProcedure);

        
int ExecuteNonQuery(IDbProvider provider,string sqlString,params IDataParameter[] param);

        
int ExecuteNonQuery(IDbProvider provider, string sqlString,bool isProcedure, params IDataParameter[] param);

        
object ExecuteScalar(IDbProvider provider,string sqlString);

        
object ExecuteScalar(IDbProvider provider, string sqlString, bool isProcedure);

        
object ExecuteScalar(IDbProvider provider,string sqlString,params IDataParameter[] param);

        
object ExecuteScalar(IDbProvider provider, string sqlString,bool isProcedure,params IDataParameter[] param);

        IDataReader ExecuteDataReader(IDbProvider provider,
string sqlString);

        IDataReader ExecuteDataReader(IDbProvider provider, 
string sqlString, bool isProcedure);

        IDataReader ExecuteDataReader(IDbProvider provider, 
string sqlString, params IDataParameter[] param);

        IDataReader ExecuteDataReader(IDbProvider provider, 
string sqlString, bool isProcedure, params IDataParameter[] param);

        DataTable ExecuteTable(IDbProvider provider,
string sqlString);

        DataTable ExecuteTable(IDbProvider provider, 
string sqlString, bool isProcedure);

        DataTable ExecuteTable(IDbProvider provider,
string sqlString,params IDataParameter[] param);

        DataTable ExecuteTable(IDbProvider provider, 
string sqlString,bool isProcedure, params IDataParameter[] param);

        
//创建DataParameter参数
        IDataParameter CreateParameter(string name);

        IDataParameter CreateParameter(
string name,object value);

        IDataParameter CreateParameter(
string name,DataType type,object value);

        IDataParameter CreateParameter(
string name,DataType type,int size);

        IDataParameter CreateParameter(
string name,DataType type,int size,object value);

        IDataParameter CreateParameter(
string name,DataType type);

        
//对实体进行操作 (有部分不可用)
        string CreateInsertSql(IEntity entity,out IDataParameter[] param);

        
string CreateUpdateSql(IEntity entity,out IDataParameter[] param);

        
string CreateDeleteSql(IEntity entity,out IDataParameter[] param);

        
string CreateSingleSql(IEntity entity,ref IDataParameter[] param);

        
string CreateSingleSql(Type type, ref IDataParameter[] param);

        
string CreateSingleSql(IEntity entity);

        
string CreateSingleSql(Type type);

        
string CreateQueryByPropertySql(IEntity entity, string propertyName, object value, out IDataParameter[] param);

        
string CreateQueryByPropertySql(Type type, string propertyName, object value, out IDataParameter[] param);

        
string CreateQueryByPropertySql(IEntity entity, Dictionary<stringobject> dic, out IDataParameter[] param);

        
string CreateQueryByPropertySql(Type type, Dictionary<stringobject> dic, out IDataParameter[] param);

        
string CreateQueryCountSql(IEntity entity, string propertyName, object value, out IDataParameter[] param);

        
string CreateQueryCountSql(IEntity entity);

        
string CreateQueryPageSql(IEntity entity,CommonPage page);

        
string CreateQueryPageSql(Type type, CommonPage page);

        T ConvertToEntity
<T>(IDataReader reader);

        IList
<T> ConvertToList<T>(IDataReader reader);

        
//反射实体属性

        Object GetPropertyValue(IEntity entity,
string name);

        T GetPropertyValue
<T>(IEntity entity,string name);

        
void SetPropertyValue(IEntity entity,string name,object value);
    }
}

 

  int ExecuteNonQuery(IDbProvider provider, string sqlString,bool isProcedure, params IDataParameter[] param);
  这个方法一般用于查询聚合函数返回的结果集。

  IDbProvider provider                            数据库提供加载驱动

  string sqlString                                   sql语句

  bool isProcedure                                  是否为存储过程,默认为false 不是存储过程

  params IDataParameter[] param        sql 语句占位符参数

 

 

  object ExecuteScalar(IDbProvider provider, string sqlString,bool isProcedure,params IDataParameter[] param);

  这个方法主要用于查询返回一行一列的结果
  IDbProvider provider                            数据库提供加载驱动

  string sqlString                                   sql语句

  bool isProcedure                                  是否为存储过程,默认为false 不是存储过程

  params IDataParameter[] param        sql 语句占位符参数

 

 

  IDataReader ExecuteDataReader(IDbProvider provider, string sqlString, bool isProcedure, params IDataParameter[] param);

  这个方法主要用于查询结果集返回只读流结果集

  IDbProvider provider                            数据库提供加载驱动

  string sqlString                                   sql语句

  bool isProcedure                                  是否为存储过程,默认为false 不是存储过程

  params IDataParameter[] param        sql 语句占位符参数

 

 

  DataTable ExecuteTable(IDbProvider provider, string sqlString,bool isProcedure, params IDataParameter[] param);

  这个主要用于查询返回DataTable 结果集

  IDbProvider provider                            数据库提供加载驱动

  string sqlString                                   sql语句

  bool isProcedure                                  是否为存储过程,默认为false 不是存储过程

  params IDataParameter[] param        sql 语句占位符参数


  IDataParameter CreateParameter(string name,DataType type,int size,object value);

  这个方法主要用于创建占位符参数
  string name             占位符名称

  DataType type           占位符参数类型,DataType 是之前的枚举类型

  int size               数据长度

    object value            占位符参数

 

 

  string CreateInsertSql(IEntity entity,out IDataParameter[] param);

  这个方法用于创建插入sql语句

  IEntity entity            实体类的公共接口

  out IDataParameter[] param    这个参数用于定位参数值, out,ref 修饰的值类型参数可以再另一个方法中修改保存

      
string CreateUpdateSql(IEntity entity,out IDataParameter[] param);

  这个方法用于创建修改sql语句

  IEntity entity            实体类的公共接口

  out IDataParameter[] param    这个参数用于定位参数值, out,ref 修饰的值类型参数可以再另一个方法中修改保存



      string CreateDeleteSql(IEntity entity,out IDataParameter[] param);

  这个方法用于创建删除sql语句

  IEntity entity            实体类的公共接口

  out IDataParameter[] param    这个参数用于定位参数值, out,ref 修饰的值类型参数可以再另一个方法中修改保存



      string CreateSingleSql(IEntity entity,ref IDataParameter[] param);
      
string CreateSingleSql(Type type, ref IDataParameter[] param);
      
string CreateSingleSql(IEntity entity);
      
string CreateSingleSql(Type type);

  这几个方法用于创建查询一条sql语句

  IEntity entity            实体类的公共接口

  Type type             实体的类型

  ref IDataParameter[] param    这个参数用于定位参数值, out,ref 修饰的值类型参数可以再另一个方法中修改保存


 

  string CreateQueryByPropertySql(IEntity entity, string propertyName, object value, out IDataParameter[] param);
     
string CreateQueryByPropertySql(Type type, string propertyName, object value, out IDataParameter[] param);
      
string CreateQueryByPropertySql(IEntity entity, Dictionary<stringobject> dic, out IDataParameter[] param);
      
string CreateQueryByPropertySql(Type type, Dictionary<stringobject> dic, out IDataParameter[] param);

  根据属性名称创建sql语句

  IEntity entity            实体类的公共接口

  Type type             实体的类型

  string propertyName        属性名称

  object value            属性值

  Dictionary<stringobject> dic     存储多个属性键值对

  out IDataParameter[] param    这个参数用于定位参数值, out,ref 修饰的值类型参数可以再另一个方法中修改保存

 

 

  string CreateQueryCountSql(IEntity entity, string propertyName, object value, out IDataParameter[] param);
      
string CreateQueryCountSql(IEntity entity);

  这个方法用于创建查询sql语句行数

  IEntity entity            实体类的公共接口

  string propertyName        属性名称

  object value            属性值

  out IDataParameter[] param    这个参数用于定位参数值, out,ref 修饰的值类型参数可以再另一个方法中修改保存

 

  

  string CreateQueryPageSql(IEntity entity,CommonPage page);
  string CreateQueryPageSql(Type type, CommonPage page);

  这个方法用于创建sql分页语句

  IEntity entity            实体类的公共接口

  Type type             实体的类型

  CommonPage page                        分页对象



 

  T ConvertToEntity<T>(IDataReader reader);

  这个方法用于将只读流转化为实体类型

  IDataReader reader       只读数据流结果集

 


     IList<T> ConvertToList<T>(IDataReader reader);

  这个方法用于将只读流转化为实体集合类型

  IDataReader reader       只读数据流结果集

 

 

  Object GetPropertyValue(IEntity entity,string name);

  获得某实体某属性的值

  IEntity entity            实体类的公共接口

  string name             属性名称

  

      T GetPropertyValue
<T>(IEntity entity,string name);

  获得某实体某属性的值

  IEntity entity            实体类的公共接口

  string name             属性名称



      void SetPropertyValue(IEntity entity,string name,object value);
  给某实体某属性赋值

  IEntity entity            实体类的公共接口

  string name             属性名称

  object value             实体属性值

 


  未完(续)


作者:情缘
出处:http://www.cnblogs.com/qingyuan/
关于作者:从事仓库,生产软件方面的开发,在项目管理以及企业经营方面寻求发展之路
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
联系方式: 个人QQ  821865130 ; 仓储技术QQ群 88718955,142050808 ;
吉特仓储管理系统 开源地址: https://github.com/hechenqingyuan/gitwms