抽象工厂模式:实现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 ......
在web config中 作如下配置:
<connectionStrings>
<add name="ydycon" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=|DataDirectory|ydy.mdb" providerName="System.Data.OleDb"/>
</connectionStrings>
在.net文件中应用链接 ......
在asp.net中生成html文件代码如下
public static bool CreatHtmlPage(string[] strNewsHtml, string[] strOldHtml, string strModeFilePath, string strPageFilePath)
{
bool Flage = false;
......
下面要解决的问题如下:
1.如何在JavaScript访问C#函数?
2.如何在JavaScript访问C#变量?
3.如何在C#中访问JavaScript的已有变量?
4.如何在C#中访问JavaScript函数?
问题1答案如下:
javaScript函数中执行C#代码中的函数:
方法一:
&nbs ......
http://www.chinaz.com/Program/.NET/101U1142006.html
1. 打开新的窗口并传送参数:
传送参数:
response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>")
接收参数:
string a = Request.QueryString("id");
string b = Request.QuerySt ......