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

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

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

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

2.配置web.config

<configSections>
...
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral"/>
...

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

此外还要添加连接字符串

<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.下面可以正式使用了,示例代码:

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();
                }
            }
        }
    }
}

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

时间: 2024-10-30 04:17:32

Enterprise Library 4.1学习笔记2----数据访问程序块的相关文章

Enterprise Library 4.1学习笔记1----配置应用程序块(c/s和b/s均适用)

园子里TerryLee的Enterprise Library系列文章回顾与总结 http://www.cnblogs.com/Terrylee/archive/2006/08/01/464591.html已经写得很全面了,不过不是针对4.1版,一边看这一系列的文章学习,一边在4.1上摸索,准备写几篇学习笔记,今天先来认识Configuration Application Block(配置应用程序块) 参照TerryLee的文章,在4.1上怎么也找不到Configuration Applicati

Enterprise Library 4.1学习笔记3----安全应用程序块

打开\EntLib41Src\Quick Starts\Security\CS 先用aspnet_regsql.exe配置一个membership/role的基本数据库,然后修改下config文件中的连接字符串 运行后会发现界面上有一段文字 Note: Much of the functionality demonstated by this QuickStart was implemented in previous versions of Enterprise Library, but th

Enterprise Library 4.1学习笔记5----实体验证程序块

实体验证的作用简单来讲,就是从服务端对数据进行验证.(特别是对数据安全性要求比较高的应用,这是十分必要的) 废话不说了,直接讲下使用步骤:(因为我是做web开发的,主要是讲解asp.net环境中的使用) 1.先添加Microsoft.Practices.EnterpriseLibrary.Validation.dll的引用 2.最基本的使用方法(也是我最不喜欢的一种方式),直接在实体类上通过添加特性实现 实体类如下: public class Person{            [String

Enterprise Library 4.1学习笔记4----缓存应用程序块

缓存是个啥?以及为啥要用缓存就不废话了,主要是从实用角度讲下怎么用 1.先添加对Microsoft.Practices.EnterpriseLibrary.Caching.dll的引用 2.修改web.config文件,注意高度部分 <configSections>    ...    <section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Cachin

Enterprise Library 4.1学习笔记8----缓存应用程序块之FileDependency

写入缓存数据时如果使用了FileDependency方式,最终的效果会让缓存是否过期依赖于某一个具体的文件,只要这个文件没有修改,缓存一直 有效,反之如果这个文件被修改过了,则缓存立即过期. 个人认为,这种方式特别适合一些极少修改的数据(比如系统中的数据字典),而且相对用绝对时间(或是时间周期)让缓存过期,更能减轻数据 库压力,毕竟如果用时间做判断,时间点一到,就得重新从数据库里查询数据(不管数据有没有被修改). 应用场合:某些基础数据几乎极少修改,可能一个月还改不到一回,这时我们可以考虑Fil

Enterprise Library 4.1学习笔记6----加密应用程序块

学习这一块内容前,先得大概知道"哈希算法"和"对称加密算法"是咋回事儿. 不清楚的先去这里充电5分钟再回来 哈希算法------http://baike.baidu.com/view/273836.htm 对称加密算法--http://baike.baidu.com/view/7591.htm 使用步骤: 1.先添加Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll的引用 2.参照http:

Enterprise Library 2.0 Hands On Lab 翻译(1):数据访问程序块(一)

练习一:使用数据访问程序块执行静态SQL语句 该练习示范了如何使用数据访问程序块进行最基本的数据访问,另外还有如何去配制程序块,提供运行时再选择数据库. 第一步 打开SimpleData.sln项目,默认的安装路径应该为C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Data Access\exercises\ex01\begin,并编译. 第二步 创建QuickStarts数据库 1.用记事本打开DataAc

MySQL学习笔记之数据的增、删、改实现方法_Mysql

本文实例讲述了MySQL学习笔记之数据的增.删.改实现方法.分享给大家供大家参考,具体如下: 一.增加数据 插入代码格式: insert into 表明 [列名-] values (值-) create table test21(name varchar(32)); insert into test21 (name) values ('huangbiao'); 插入原则: 1.插入的数据应与字段的数据类型相同 2.数据的大小应该在列的规定范围内 3.在values中列出的数据位置必须与被加入的列

Windows phone 8 学习笔记(2) 数据文件操作

原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方.本节主要讲解它们的用法以及相关限制性.另外包括本地数据库的使用方式. 快速导航:     一.分析各类数据文件存储方式     二.安装文件夹     三.本地文件夹(独立存储空间)     四.媒体库操作     五.本地数据库 一.分析各类数据文件存储方式 1)安装文件夹 安装文件夹即应用安装