源代码:13033480群共享

一、工厂模式

添加新项→窗体CommonToDatabase.aspx,Web.config中的5个连接字体串不变,CommonToDatabase.aspx.cs中添加如下代码:

using System;

using System.Data;

using System.Configuration;

using System.Data.Common;

public partialclassCommonToDatabase : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

//分别与下面命名空间成对替换OleDbToSQLString、OleDbToAccessString、OleDbToExcelString、OdbcToExcelString

String connectionString =ConfigurationManager.ConnectionStrings["SQLServerToSQLString"].ConnectionString;

//分别与上面连接字符串成对替换System.Data.OleDb、System.Data.OleDb、System.Data.OleDb、System.Data.Odbc

DbProviderFactory dbfactory =DbProviderFactories.GetFactory("System.Data.SqlClient");

DbConnection conn = dbfactory.CreateConnection();

conn.ConnectionString = connectionString;

DbCommand cmd = dbfactory.CreateCommand();

cmd.Connection = conn;

cmd.CommandType = CommandType.Text;

cmd.CommandText = "SELECT * FROM Category";

conn.Open();

DbDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())

{

Response.Write(rdr["Name"] +"<br/>");

}

rdr.Close();

conn.Close();

}

}

在浏览器中查看CommonToDatabase.aspx,并分别用另4对连接字符串和数据提供程序的命名空间,也就是PriverName替换。这样,就实现了代码不变的情况下,五种数据库的连接方法。连接字符串和PriverName都可以在Web.config中进行设置,代码就一点都不需要改变了。

二、工厂模式的应用

工厂模式的最大好处,就是可以实现,在配置文件中改变一下设置,就可以改变数据库的连接,切换到不同的数据库。

一、Web.config

<appSettings>

<addkey="DatabaseSelect"value="OleDbToAccessString"/>

</appSettings>

<connectionStrings>

<addname="SQLServerToSQLString"connectionString="Server=.\SQLEXPRESS;Database=NetShop;Trusted_Connection=yes;"providerName="System.Data.SqlClient"/>

<addname="OleDbToSQLString"connectionString="Provider=SQLOLEDB;Server=.\SQLEXPRESS;Database=NetShop;Trusted_Connection=yes;"providerName="System.Data.OleDb"/>

<addname="OleDbToAccessString"connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\NetShop.mdb"providerName="System.Data.OleDb"/>

<addname="OleDbToExcelString"connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\NetShop.xls;extended properties=excel 8.0;"providerName="System.Data.OleDb"/>

<addname="OdbcToExcelString"connectionString="Driver={Microsoft Excel Driver (*.xls)};DBQ=|DataDirectory|\NetShop.xls"providerName="System.Data.Odbc"/>

</connectionStrings>

二、UsingFactory.aspx.cs

using System;

using System.Data;

using System.Configuration;

using System.Data.Common;

public partialclassUsingFactory : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

String strDB = ConfigurationManager.AppSettings["DatabaseSelect"];

String connectionString =ConfigurationManager.ConnectionStrings[strDB].ConnectionString;

String priverName = ConfigurationManager.ConnectionStrings[strDB].ProviderName;

DbProviderFactory dbfactory =DbProviderFactories.GetFactory(priverName);

DbConnection conn = dbfactory.CreateConnection();

conn.ConnectionString = connectionString;

DbCommand cmd = dbfactory.CreateCommand();

cmd.Connection = conn;

cmd.CommandType = CommandType.Text;

cmd.CommandText = "SELECT * FROM Category";

conn.Open();

DbDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())

{

Response.Write(rdr["Name"] +"<br/>");

}

rdr.Close();

conn.Close();

}

}

【技术要点】

1、Web.config中<addkey="DatabaseSelect"value="OleDbToAccessString"/>的value值,可以设置为5个连接字符串的name值。

2、连接字符串中providerName属性在这时超了作用,可由ConfigurationManager类读出,作为DbProviderFactories类创建不同的工厂类DbProviderFactory的参数,不同的工厂类,就可以创建不同的DbProviderFactory。

3、严重怀疑,4个数据提供程序,也就是4个命名空间的类,采用了相同的接口,至少,Connectin类是这样,不然DbConnection没有办法指向不同的类,并调用不同类中的属性与方法。

转载于:https://www.cnblogs.com/java20130723/archive/2012/04/25/3211649.html

ASP.NET连接SQL、Access、Excel数据库(三)——工厂模式相关推荐

  1. 通过OleDB连接方式,访问Access,Excel数据库.

    通过OleDB连接方式,访问Access,Excel数据库. OleDbConnectionStringBuilder oleConStr = new OleDbConnectionStringBui ...

  2. asp教程连接sql server数据库教程二种方法

    asp教程连接sql server数据库教程二种方法  ,sql server ole db连接方法:,本人链接sql2012已经成功,想可以帮助大家 本教程主要是讲了asp与mssql server ...

  3. Eclipse如何连接SQL Server 2005数据库

    做管理系统当然少不了经常与数据库打交道,在网上搜了很多数据库版本都不小,大的有好几个G的,小的也有几百兆的,我这可怜的内存,最终找了个精简版中的精简版的Sql server2005,只有80几兆,本来 ...

  4. Qt连接SQL Server 2014数据库

    Qt连接SQL Server 2014数据库 1. 建立目标数据库 连接数据库之前,需先在SQL Server中建立一个目标数据库,建立数据库和添加表的步骤这里不详述. 如建立一个名为DataBase ...

  5. 图解微软ReportBuilder3连接Sql Server 2008数据库表创建报表

    ReportBuilder3下载: http://pan.baidu.com/s/1skFeGVj 这东西还是一个好东东: 下面演示使用ReportBuilder3连接sql server 数据库表生 ...

  6. java连接SQL Server 2005数据库教程(手把手教程)

    步骤一: 在连接数据库之前必须保证SQL Server 2005是采用SQL Server身份验证方式而不是windows身份验证方式.如果在安装时选用了后者,则重新设置如下: 打开SQL Serve ...

  7. [转]asp.net导出数据到Excel的三种方法

    原文出处:asp.net导出数据到Excel的几种方法(1/3) .asp.net导出数据到Excel的几种方法(2/3).asp.net导出数据到Excel的几种方法(3/3) asp.net导出到 ...

  8. jsp连接Sql Server 2000数据库

    testsqlserver.jsp如下: <%@ page contentType="text/html;charset=gb2312"%> <%@ page i ...

  9. 远程连接SQL Server 2005数据库

    由于项目需要,我要远程连接到一台团队服务器上的SQL Server 2005数据库.但是试了几次都没有成功,后来在网上搜了很多相关资料终于搞定了,这里把它总结一下. 确保服务器端的数据库中存在sa. ...

  10. SQL SERVER 2000数据库置疑 紧急模式

    SQL SERVER 2000数据库,服务重启之后系统库以外的其它库都会出现置疑(置疑之前没有备份的库.除非是置疑前一秒刚备份完,或者是备份完没有再使用,可以直接恢复): 1.停掉SQL SERVER ...

最新文章

  1. 后盾网php多少钱_复合排水网价格多少钱
  2. C++迭代器iterator
  3. Mysql修复损坏表并写脚本自动修复
  4. python中文编码-Python中文乱码(转)
  5. 检查卷位图时发现损坏怎么修复_中频弯管严密性如何测试?怎么修复中频弯管?...
  6. oracle optimizer_features_enable,Oracle Optimizer:迁移到使用基于成本的优化器—–系列2.1-数据库专栏,ORACLE...
  7. python决策树分类 导入数据集_BPNN、决策树、KNN、SVM分类鸢尾花数据集Python实现...
  8. html非封闭标签,自封闭的html标签
  9. javadoc解析成java 生成 api文档
  10. 利用spring的CommonsMultipartResolver上传文件
  11. SharePoint 2010 中型场(Farm)——性能研究(来自DeLL技术中心博客)
  12. 乡镇医院计算机管理,乡镇卫生院管理系统
  13. XXX集团财务决策支持系统的起因(系列二)
  14. MSNP18协议分析(一)--- MSN协议介绍
  15. 从高德地图获取城市地铁线路+站点
  16. HUST算法实践_POJ3233
  17. npi阶段是什么意思_NPI阶段发现的重要性论述
  18. 根据生日自动计算年龄
  19. 检查nmos管是否损坏
  20. 【C语言】控制台窗口图形界面编程(八):键盘事件

热门文章

  1. 第十二课:实验二 循环链表实验
  2. 写入sql时间_一问SQL优化就无从藏身?那只是你对原理的精髓掌握不深
  3. Unity 编辑器知识(—)如何绘制色块
  4. python中exit的作用_python中,exit,return,sys.exit()等的区别与使用方法 | 学步园
  5. MCU串行通讯和并行通讯的区别以及UART的理解
  6. Debug时,出现Unable to evaluate the expression Cannot find xxx
  7. 4.自定义的Spring Boot Starters
  8. 使用util.js处理表格
  9. Spring源码之ApplicationContext(四)功能补充
  10. 【渝粤教育】21秋期末考试社会学概论10082k1