[原创]EsFrameWork 工具类使用[一]

工具类EsFrameWork.DataBus是数据操作类,可以进行任何库,任何数据表,视图,存储过程的访问与修改。

这个类有两个功能

第一,不同数据库应用不同的DbConnection及DataReader,DataAdapter 返回接口

第二,不同数据接口可以进行EsDataConstructer(xmlfile) 返回List<POClass>的泛型集合实体类,然后你就可以用他来做绑定,数据源等操作啦

 

不废话了,先把代码弄上来

 

ExpandedBlockStart.gif 代码
using  db  =  EsFrameWork.EsDataBus;
// 可以减少多打字数噢


// 实例化数据中心 by 数据库类型
EsDataCenter edc  =   new  EsDataCenter(EsDataBaseType.OracleClient);

// 实例化连接
IDbConnection idc  =  edc.EsDataBaseInit( " user id=test;password=test;data source=test " );
// 测试连接
if  (edc.EsDataBaseTest(idc))
    Console.WriteLine(
" connect " );
else
    Console.WriteLine(
" connect field " );

// 执行sql语句
IDataReader idr  =  edc.EsDataRun_ReturnReader( " select * from eai_data " );
// 构造数据结构
EsDataConstructer edcr  =   new  EsDataConstructer( " c:\\ " " XMLFile1.xml " );
// 转换数据至数据结构实例
List < object >  tps  =  edcr.Constructer( " EAI_DATA " , idr,  typeof (testPo));

// Console.WriteLine((tps[0] as testPo).CDATAID);
List < EsDataParameter >  parametersList  =   new  List < EsDataParameter > ();
EsDataParameter ldp1 
=   new  EsDataParameter();
ldp1.ParameterName 
=   " v_result " ;
ldp1.ParameterType 
=  DbType.String;
ldp1.ParameterLength 
=   255 ;
ldp1.ParameterInOutType 
=  ParameterDirection.Output;
parametersList.Add(ldp1);

// 返回存储过程Command
IDbCommand pidcmd  =  edc.EsDataRunProcedure_ReturnCommand( " zqsmsspackage.getrjmessage " , parametersList);
// 返回存储过程DataReader
IDataReader pidr  =  edc.EsDataRunProcedure_ReturnReader( " zqsmsspackage.getrjmessage " new  List < EsDataParameter > ()
{
// 也可以这样加载Parameter
new  EsDataParameter(){ParameterName = " v_result " ,ParameterLength = 255 ,ParameterInOutType = ParameterDirection.Output,ParameterType = DbType.String}
});
// Console.WriteLine((pidcmd.Parameters[0] as System.Data.Common.DbParameter).Value);

类需要加载EsDataCenter类,实例化时需要一个enum类型,为的是多种数据库的支持

ExpandedBlockStart.gif 代码
     ///   <summary>
    
///  数据库类型枚举
    
///   </summary>
     public   enum  EsDataBaseType
    {
        SqlServerClient,
        OracleClient,
        AccessClient,
        MySqlClient,
        SyBaseClient,
        OtherClient
    }

 

然后就连数据库了,我们来试试,首先实例化一个连接IDbConnection,我们需要用DataCenter数据中心的一个方法去初始化连接EsDataBaseInit

//方法原型,相应的DataBaseType会返回相应的DbConnection
public  IDbConnection EsDataBaseInit( string  _dbconstr)

 

这了我们还提供个测试数据库连接的方法 数据中心可主动测试某个Connection是否连接,EsDataBaseTest方法,容错机制很不错,自动提升数据库性能的

IDataReader idr  =  edc.EsDataRun_ReturnReader( " select * from eai_data " );

 

这里开始执行语句啦,返回一个DataReader你就可以进行操作了,你总不能循环取数据吧,那样太麻烦了,当然了,你要是想得到这个idr的command也简单

IDbCommand idccc  =  edc.EsDataRun_ReturnCommand( " select * from eai_data " );

 

也可以得到idr的Adapter哈

IDataAdapter idaaa  =  edc.EsDataRun_ReturnAdapter( " select * from eai_data " );

 

 

下面就开始说另一个东东咯,就是上文中提到麻烦的循环读取,c#有泛型后,一切都变的简单咯,虽说泛型不是微软原创,但是比原创做的都好,所以说,微软。。。哎,你知道的

这里要说的就是自动填充泛型数据咯,原理就是反射,反射+反射以及反射,可见原理有太多,大家不要迷糊噢

我们先来做个PO对象,就是持久化对象啦

ExpandedBlockStart.gif 代码
     public   class  testPo 
    {
        
public   string  CDATAID {  get set ; }
        
public  DateTime CSTIME {  get set ; }
        
public  DateTime CEXIPREDTIME {  get set ; }
        
public   string  CSTATE {  get set ; }

    }

 

这里的字段都是表里的噢,数据Constructer的时候,会不会出现类型转换错误呢,你也想到这里了,对的,一定会,那么我们该怎么做呢,那就要看你xml是怎么写的

数据Constructer的时候需要你给定一个XML文件

ExpandedBlockStart.gif 代码
<? xml version="1.0" encoding="utf-8"  ?>
< Constructer  dbtype ="OracleClient" >
  
< Table  name ="EAI_DATA"  primary ="CDATAID" >
    
< Column  name ="CDATAID"  type ="VARCHAR" />
    
< Column  name ="CSTIME"  type ="DATE"   />
    
< Column  name ="CEXIPREDTIME"  type ="DATE"   />
    
< Column  name ="CSTATE"  type ="VARCHAR"   />
  
</ Table >
  <Table name="EAI_SUMER" primary="CDATAID">
    
<Column name="SUMERID" type="VARCHAR"/>
    
<Column name="SUMERTIME" type="VARCHAR" />
    
<Column name="SUMERREDTIME" type="VARCHAR" />
    
<Column name="SUMERTATE" type="VARCHAR" />
  
</Table>
</ Constructer >

 

 标记不可以变哦,根节点一定要Constructer,Dbtype同Enum类型,因为这个Attribute会决定数据类型对应C#里的类型,Table是表节点,可以放多张表在Constructer里,Column是列,其他自己看吧,不多废话啦

下面就是使用了,前提是需要对象实体类PO,和表结构XML配置

 

ExpandedBlockStart.gif 代码
                EsDataConstructer edcr  =   new  EsDataConstructer( " c:\\ " " XMLFile1.xml " );
                
// 转换数据至数据结构实例
                List < object >  tps  =  edcr.Constructer( " EAI_DATA " , idr,  typeof (testPo));

 

构造EsDataConstructer有几个重载,有说明的,自己看下,另外所有代码都有注释的

第2句呢,就是返回泛型集合了List<Object> 类型

edcr.Constructer("EAI_DATA", idr, typeof(testPo));

这个方法也有很多重载,我只说一个,就是这个,第一个参数,是你XML里的节点表Table name=“EAI_DATA”,第2个参数则是你要使用的DataReader,第3个参数则要把你实体类的类型传进去

你可以用new testPo().GetType(),也可以用typeof(testPo),就会得到他的类型啦

 

构造后的结果你可以直接拿去绑定数据源

GridView1.DataSource=tps;

GridView1.DataBind();

每一列名绑定,则是你实体类的变量名CDATAID,CEXIPREDTIME,CSTIME,CSTATE类似这些

 

还有很多讲不详细,要不得写太多东西了

另外此FrameWork里还带

EsIOBus  操纵IO,File,Stream,Bytes,等输入输出数据

EsXMLBus 逻辑化XML文件放入实体对象,绝对好用

EsNetBus 点对点传输,TCP/UDP 及断点续传,功能灰常强大(还有一点就要写完了)

 刚搞了张类视图

 

好了就写这么多吧,上传附件escorelib.dll,1.0版哈

 /Files/chinaeddy/escorelib.rar

转载于:https://www.cnblogs.com/chinaeddy/archive/2010/06/10/EsFrameWork.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值