Enterprise Library 4.1学习笔记2----数据访问程序块
时间:2022-04-23
本文章向大家介绍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();
}
}
}
}
}
基本上涉及数据库操作的东东都已经在里面了,更多功能大家自己去体验吧
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 02Python数据结构之再谈List的常用操作
- 03Python List不得不知的操作之改、查
- 04Python基础之字符串Str
- 05Python元组tuple的个性
- Tkinter Canvas
- Python实现最小二乘法
- 一个简单的例子学明白用Python插值
- python 类class基础简明笔记
- 数据离散化及其KMeans算法实现的理解
- [tensorflow损失函数系列]sparse_softmax_cross_entropy_with_logits
- 怎样将Anaconda设置为国内的镜像
- Python实现KMeans算法
- Python面向对象编程
- HTML和CSS常见问题整理
- Nginx Linux详细安装部署教程