抽象工厂模式:实现ASP.NET访问不同数据库
在ASP.NET网站开发中可能会遇到要更换数据库,如将Aceess换为SQL Server ,由于Aceess引用System.Data.OleDb命名空间,SQL Server引用System.Data.SqlClient命名空间。在一般程序代码中我们需要更改连接字符串,ADO.NET数据访问命令对象,最麻烦的是不同数据库有各自不同Sql命令。我们可以使用抽象工厂模式实现ASP.NET访问不同数据库。
1、抽象工厂模式(Abstract Factory):提供一个创建一系列相互依赖对象的接口,而无需指定他们的具体类。
2、一般组成:抽象产品接口,具体产品类,抽象工厂接口,具体工厂类,客户端代码
3、作用:易于交换产品系列,在一个应用中只需在初始化的时候出现一次,这就使得改变一个应用的具体工厂的具体工厂变得非常容易,只需改变具体工厂即可使用不同的产品配置
让具体的创建实例过程与客户端分离,客户端是通过他们的抽象类接口操纵实例,产品的具体类名也被具体工厂是实现分离,不会出现在客户代码中。
网上提供的代码基本是为了讲解说明C#设计模式,由C#控制台程序代码实现,并没有真正实现访问数据库。我这里通过建立一个ASP.NET网站,实现访问Access与SQL Server数据库。主要参考《大话设计模式》
具体步骤代码如下:
1、 分别在Access和SQL Server建立数据库DaHua与数据库表User(ID,Name),Department(ID,DepartName)
2、 启动Visual Studio 2005/2008新建网站
3、 到web.config添加数据库连接
4、 在网站解决方案右键新建类库ClassLibrary1,新建类文件,包括:
AbstractUser抽象类,SqlserverUser类,AccessUser类
AbstractDepartment抽象类,SqlserverDepartment类,AccessDepartment 类
DataAccess类
生成dll
5、到项目添加引用,项目-右键-添加引用-项目-ClassLibrary1
6、前台代码:添加一个GridView控件,三个Button控件,2个TextBox控件
用于查询表User和Department表内容,插入User表数据
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Reflection;
namespace ClassLibrary1
{
/// <summary>
///AbstractUser抽象类
/// </summary>
public abstract clas
相关文档:
//private string datapatch = ConfigurationSettings.AppSettings["acessconn"];//数据库地址
private string datapatch = "db/global.asa";//数据库地址
///
/// 取得dataset
//
/// 查询语句
///
public DataSet GetDataSet(string Commandtext)
{&nbs ......
1. Asp.Net中几种相似的标记符号: < %=...%>< %#... %>< % %>< %@ %>解释及用法
答: < %#... %>: 是在绑定控件DataBind()方法执行时被执行,用于数据绑定
如: < %# Container.DataItem("tit") %>
< %= %>: 在程序执行时被调用,可以显示后台变量值
如:
*.aspx中: < %= ......
ASP.NET 应用程序必须位于 IIS 虚拟目录(也称为应用程序根目录)中。ASP.NET 应用程序可包含已编译的程序集(通常是包含业务逻辑的 DLL 文件)、用于存储预编译代码的已知目录(目录名总是 \Bin)、存储在基于文本的、易读的 Web.config 文件中的配置设置、页、服务器控件,以及 XML Web 服务。
服务器中任何不与其他应用 ......
以下类容为转载,但是不知道是什么原因,经本人测试这个方法有一个bug,按照以下类容所设计的角色验证不能成功。Application_AuthorizeRequest事件改为Application_AuthenticateRequest事件才能实现。
Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活。
Forms 验证 ......
/// <summary>
/// 得到站点用户IP
/// </summary>
/// <returns></returns>
public
static
string
getUserIP()
{
retu ......