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 < string , object > dic, out IDataParameter[] param);
string CreateQueryByPropertySql(Type type, Dictionary < string , object > 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<string, object> dic, out IDataParameter[] param);
string CreateQueryByPropertySql(Type type, Dictionary<string, object> dic, out IDataParameter[] param);
根据属性名称创建sql语句
IEntity entity 实体类的公共接口
Type type 实体的类型
string propertyName 属性名称
object value 属性值
Dictionary<string, object> 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 实体属性值
未完(续)