spring.net 框架分析--数据访问

spring.net对ado.net进行的封装,使我们更加轻松的访问数据库

  先看例子:

view plaincopy to clipboardprint?
using System;   
using Spring.Data.Core;   
using Spring.Data.Common;   
namespace data_test   
{   
    class Program   
    {   
        static void Main(string[] args)   
        {   
            IDbProvider idbp = DbProviderFactory.GetDbProvider("System.Data.SqlClient");   
            idbp.ConnectionString = "Data Source=localhost;Initial Catalog=test;Integrated Security=True";   
            AdoTemplate at = new Spring.Data.Core.AdoTemplate(idbp);   
            at.ExecuteNonQuery(System.Data.CommandType.Text, "insert table1 values(2)");   
          }   
    }   
}  
using System;
using Spring.Data.Core;
using Spring.Data.Common;
namespace data_test
{
    class Program
    {
        static void Main(string[] args)
        {
            IDbProvider idbp = DbProviderFactory.GetDbProvider("System.Data.SqlClient");
            idbp.ConnectionString = "Data Source=localhost;Initial Catalog=test;Integrated Security=True";
            AdoTemplate at = new Spring.Data.Core.AdoTemplate(idbp);
            at.ExecuteNonQuery(System.Data.CommandType.Text, "insert table1 values(2)");
          }
    }
}

在这个例子中,我们执行的一个sql语句"insert table1 values(2)",下面我们具体分析一下:

IDbProvider idbp = DbProviderFactory.GetDbProvider("System.Data.SqlClient");
idbp.ConnectionString = "Data Source=localhost;Initial Catalog=test;Integrated Security=Tue";

这两句我们通过DbProviderFactory工厂建立了一个IDbProvider 对象,但实际的数据库访问时通过"System.Data.SqlClient"完成的。也就是说当我们建立了一个IDbProvider 对象时,系统实例化了个System.Data.SqlClient对象。

AdoTemplate at = new Spring.Data.Core.AdoTemplate(idbp);

AdoTemplate 是把典型的“样板式”任务封装起来。

at.ExecuteNonQuery(System.Data.CommandType.Text, "insert table1 values(2)");

执行sql语句 。

不过,spring.net中怎么能这么写代码,当然是用配置文件搞定。 我们直接我上面的代码翻译成配置文件:

view plaincopy to clipboardprint?
<object id ="DbProvider" type ="Spring.Data.Common.DbProviderFactory,Spring.Data"  
                 factory-method ="GetDbProvider" >  
    <constructor-arg name ="providerInvariantName" value ="System.Data.SqlClient"></constructor-arg>  
    <property name ="ConnectionString" value ="Data Source=localhost;Initial Catalog=test;Integrated Security=True"></property>  
  </object>   
  <object id="adoTemplate" type="Spring.Data.Core.AdoTemplate, Spring.Data">  
    <property name="DbProvider" ref="DbProvider"/>  
  </object>  
<object id ="DbProvider" type ="Spring.Data.Common.DbProviderFactory,Spring.Data"
                 factory-method ="GetDbProvider" >
    <constructor-arg name ="providerInvariantName" value ="System.Data.SqlClient"></constructor-arg>
    <property name ="ConnectionString" value ="Data Source=localhost;Initial Catalog=test;Integrated Security=True"></property>
  </object>
  <object id="adoTemplate" type="Spring.Data.Core.AdoTemplate, Spring.Data">
    <property name="DbProvider" ref="DbProvider"/>
  </object>


调用代码:

        view plaincopy to clipboardprint?
//取得容器   
         IApplicationContext ioc = ContextRegistry.GetContext();   
         //取得AdoTemplate对象   
         AdoTemplate at = (AdoTemplate)ioc.GetObject("adoTemplate");   
         //执行sql语句   
         at.ExecuteNonQuery(System.Data.CommandType.Text, "insert table1 values(2)");  
//取得容器
          IApplicationContext ioc = ContextRegistry.GetContext();
          //取得AdoTemplate对象
          AdoTemplate at = (AdoTemplate)ioc.GetObject("adoTemplate");
          //执行sql语句
          at.ExecuteNonQuery(System.Data.CommandType.Text, "insert table1 values(2)");


  当然,你也可以用:

view plaincopy to clipboardprint?
<objects xmlns='http://www.springframework.net' xmlns:d="http://www.springframework.net/database"> <d:dbProvider id="DbProvider" provider="System.Data.SqlClient" connectionString="Data Source=(local);Database=Spring;User ID=springqa;Password=springqa;Trusted_Connection=False"/> <object id="adoTemplate" type="Spring.Data.AdoTemplate, Spring.Data"> <property name="DbProvider" ref="DbProvider"/> </object> </objects>

转载于:https://www.cnblogs.com/meilibao/archive/2013/04/24/3040612.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值