前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Enterprise Library 4.1学习笔记2----数据访问程序块

Enterprise Library 4.1学习笔记2----数据访问程序块

作者头像
菩提树下的杨过
发布2018-01-23 10:52:35
5280
发布2018-01-23 10:52:35
举报

Data Access Application Block 其实个人感觉相当于另一个版本的dbHelper

废话不多说,先看下如何使用:

1.引用Microsoft.Practices.EnterpriseLibrary.Data.dll(EL安装目录下的bin中就有)

2.配置web.config

代码语言:js
复制
<configSections>
...
<section name="dataConfiguration" 
type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral"/>
...

这一节是系统自动加上去的,原来后面还有一截PublicKeyToken=....,不过在使用中发现系统总是报错无法加载EL程序集之类,所以到园子里搜索了下,参考前人的解决办法去掉了这一段(可能是发行时版本不一致造成的)

此外还要添加连接字符串

代码语言:js
复制
<connectionStrings>
 <add name="Conn" connectionString="Data Source=.;Initial Catalog=Six;Persist Security Info=True;User ID=sa;Password=***" providerName="System.Data.SqlClient"/>
 <add name="Conn2" connectionString="Data Source=.;Initial Catalog=dbUser;Persist Security Info=True;User ID=sa;Password=***" providerName="System.Data.SqlClient"/>
</connectionStrings>
<dataConfiguration defaultDatabase="Conn"/>

这跟常规的web开发几乎没什么不同,要说明的是<dataConfiguration defaultDatabase="Conn"/>这一节标明了默认情况下使用哪个连接字符串

3.下面可以正式使用了,示例代码:

代码语言:js
复制
using System;
using System.Data;
using System.Data.Common;
using Microsoft.Practices.EnterpriseLibrary.Data;

namespace test
{
 public partial class _Default : System.Web.UI.Page
    {
 protected void Page_Load(object sender, EventArgs e)
        {
            Database db = DatabaseFactory.CreateDatabase("Conn");

 //查询数据
 //this.Repeater1.DataSource = db.ExecuteReader(CommandType.Text, "Select * from GoGo365");

 //调用存储过程(直接传参数的简单调用)
 //this.Repeater1.DataSource = db.ExecuteReader("up_test", "2");

 //切换数据库
            db = DatabaseFactory.CreateDatabase("Conn2");           

 //带输出和返回参数的存储过程调用
            DbCommand cmd = db.GetStoredProcCommand("up_Page2005");
            db.AddInParameter(cmd, "TableName", DbType.String, "T_User");
            db.AddInParameter(cmd, "Fields", DbType.String, "F_NickName");
            db.AddInParameter(cmd, "OrderField", DbType.String, "F_Id");
            db.AddInParameter(cmd, "sqlWhere", DbType.String, "F_Status=1");
            db.AddInParameter(cmd, "PageSize", DbType.Int16, 50);
            db.AddInParameter(cmd, "PageIndex", DbType.Int16, 2);
            db.AddOutParameter(cmd, "TotalPage", DbType.Int16, 4);
            db.AddParameter(cmd, "RecordCount", DbType.Int16, ParameterDirection.ReturnValue, "", DataRowVersion.Default, 0);


 this.Repeater1.DataSource = db.ExecuteReader(cmd);            
 this.Repeater1.DataBind();


            Response.Write("输出参数值:" + db.GetParameterValue(cmd, "TotalPage").ToString());
            Response.Write("<br />返回参数值:" + db.GetParameterValue(cmd, "RecordCount").ToString());


 //使用事务
            db = DatabaseFactory.CreateDatabase("Conn");
 using (IDbConnection conn = db.CreateConnection())
            {
                conn.Open();
                IDbTransaction _trans = conn.BeginTransaction();
 try
                {
                    DbCommand _cmd = db.GetSqlStringCommand("Insert Into GoGo365(F_NickName) values(@NickName)");
                    db.AddInParameter(_cmd, "NickName", DbType.String, "AA");
                    db.ExecuteNonQuery(_cmd, _trans as DbTransaction);
                    db.ExecuteNonQuery(_cmd, _trans as DbTransaction);//F_NickName字段上建有唯一索引,故第二次插入同样记录时会报错
                    _trans.Commit();
                }
 catch
                {
 try
                    {
                        _trans.Rollback();//事务提交失败时,则回滚(是否回滚成功,可查看表中有无AA的记录即可)
                    }
 catch { }
                }
 finally 
                {
                    conn.Close();
                }
            }
        }
    }
}

基本上涉及数据库操作的东东都已经在里面了,更多功能大家自己去体验吧

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-05-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档