使用IsLine FrameWork开发ASP.NET程序之二—使用DataProvider 访问数据 (上)

    上一期的文章中我们提到DataProvider模块,这个模块完成了各种数据源的操作,兼容的数据源包括SQL SERVER数据库、Oracle数据库、XML文件、文本文件、Config站点配置文件等。基本约束关系如下图所示:

       clip_image002

图 2.1 DataProvider 基本约束关系

    这个模块主要包括以下命名空间:

    ● IsLine.Data.ContainerDefiner命名空间:

    IsLine.Data.ContainerDefiner是DataProvider的一个扩展,它定义了一些ADO.NET中常用的数据对象,以容器的角色出现在上层中,它可以根据一些列的缓存策略,并根据这些策略对数据进行持久化,这个命名空间依赖于命名空间IsLine.HttpContent.HCDataTypeEnum。

    主要成员类为ContainerDefine ,它实现了接口ISqlContainer, IOracleContainer, IFileContainer, IDisposable),其中的IFileContainer.FileContent方法,返回或设置一个FileContent,该FileContent为IfileContainer接口成员,包含缓存优化选项,该选项可在实例化时指定;其他方法包括SqlDataReader、OracleDataReader、DataSet、DataRow、Dispose()都是对ADO.NET的二次封装,但是又包含了一些优化操作,比如当存储大型数据时,DataProvider会自动开启缓存机制,以提高数据读取效率。

    ● IsLine.Data.DataProvider命名空间:

    这个命名空间是DataProvider的主体,它完成了对数据的存储操作。它依赖于命名空间:IsLine.Security.Cryptography、IsLine.Data、IsLine.Data.Configuration。主要成员类名称有DBProvider、OracleProvider(实现接口IOracleProvider)、SqlProvider(实现接口ISqlServerProvider)、FileProvider、XMLProvider、TextProvider、SuitConfigProvider。

    你可以使用自定义的工厂,也可以直接使用IsLine FrameWork中定义好的方法DataProvider处理数据,使用DataProvider前,需要先在web.config中配置以下节点,添加于<configSections></configSections>之间:

<IsLine.Data.Configuration>
<DataBaseConnection>

<DBType>IsLine.Data.DataTypeEnum.DataBaseType.SqlServer</DBType>
<Server>Server IP</Server>
<UserID>sa</UserID>
<PwdType>Cryptography.Decrypting</PwdType>

<Pwd>111111</Pwd>
<DataBase>UML</DataBase> //SqlServer only
</DataBaseConnection>
</IsLine.Data.Configuration>

    其中DataBaseConnection指明数据库类型,PwdType指明密码加密策略,IsLine Provider内置3中策略供选择,如配置文件所示。以上示例为针对SqlServer,对于Oralce数据库,同样采用以上的格式配置,只不过稍作变化:

将DBType变更为IsLine.Data.Configuration.OracleConnectString;Server节点指明TNS别名;同时多出了OtherPlus节点中的内容会作为Oracle连接串的一部分,发送给数据库。

<OtherPlus>Provider=MSDAORA.1; Persist Security Info=False;</OtherPlus>

以上方法为结构化配置方法,如果读者觉得这样配置比较麻烦,可以使用以下简单配置方法,免去节点的配置:

    SQL SERVER配置:

<add key=" IsLine.Data.Configuration.SqlServerConnectString " value="Data Source=Server IP;User;Password=111111;Integrated Security=no;Enlist=false;Pooling=true;" />

    ORACLE 配置:

    <add key="IsLine.Data.Configuration.OracleConnectString" value="Data Source=TNS别名;User;Password=111111;Integrated Security=no;Enlist=false;Pooling=true;" />

上面提到的两种配置方法,可任选其一。节点配置好后,使用以下方法调用,调用时分为面向连接与非连接两种方式,面向连接的操作(例如返回DataSet/Reader/Adapter等)使用前须进行实例化,使用后须调用.Dispost()方法释放资源,Dispost()是一个经过DataProvider重写的方法,一旦调用将会释放所有资源,包括Connection、Command、DataReader等,而面向非连接操作则直接调用即可。如果使用DataReader、Adapter等为面向连接操作,单纯执行sql语句为非连接操作,例如访问数据库单纯执行依据sql语句可以使用:

    OracleProvider.ExecuteNonQuery()或SqlProvider.ExecuteNonQuery(),而有些方法是需要实例化才能使用的,例如:

    OracleProvider op = new OracleProvider();

    op.SomeFunc();

如果各位读者希望得到更加详细的方法与参数列表,请访问我的博客。

下面为大家列出一些执行的实例:

  1.执行一句sql语句:

    OracleProvider.ExecuteNonQuery(sql);

2.利用事务执行一批sql语句:

OracleProvider.ExecuteNonQuery(sql,true,CommandType.Text,null);

其中第二个参数说明打开事务,执行第一个参数传入的语句,语句之间以“!”号分隔。

3.执行一个存储过程:

OracleProvider.ExecuteNonQuery(StoredProcedureName,null,CommandType.StoredProcedure, OracleParam);

4.返回一个DataReader

new OracleProvider().ExecuteReader(sql);

6.使用指定连接返回一个DataSet

new OracleProvider().ExecuteDataSet(sql,"ConnectionStr",0);

    以上只是几个很简单的例子,总之使用DataProvider,就可以实现通过配置控制数据库,而代码层面只有操作语句,没有数据库连接、配置语句的目的了。


本文转自Aicken(李鸣)博客园博客,原文链接:http://www.cnblogs.com/isline/archive/2010/04/22/1717858.html,如需转载请自行联系原作者

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值