ASP.NET连接SQL、Access、Excel数据库(三)——工厂模式
源代码: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数据库(三)——工厂模式相关推荐
- 通过OleDB连接方式,访问Access,Excel数据库.
通过OleDB连接方式,访问Access,Excel数据库. OleDbConnectionStringBuilder oleConStr = new OleDbConnectionStringBui ...
- asp教程连接sql server数据库教程二种方法
asp教程连接sql server数据库教程二种方法 ,sql server ole db连接方法:,本人链接sql2012已经成功,想可以帮助大家 本教程主要是讲了asp与mssql server ...
- Eclipse如何连接SQL Server 2005数据库
做管理系统当然少不了经常与数据库打交道,在网上搜了很多数据库版本都不小,大的有好几个G的,小的也有几百兆的,我这可怜的内存,最终找了个精简版中的精简版的Sql server2005,只有80几兆,本来 ...
- Qt连接SQL Server 2014数据库
Qt连接SQL Server 2014数据库 1. 建立目标数据库 连接数据库之前,需先在SQL Server中建立一个目标数据库,建立数据库和添加表的步骤这里不详述. 如建立一个名为DataBase ...
- 图解微软ReportBuilder3连接Sql Server 2008数据库表创建报表
ReportBuilder3下载: http://pan.baidu.com/s/1skFeGVj 这东西还是一个好东东: 下面演示使用ReportBuilder3连接sql server 数据库表生 ...
- java连接SQL Server 2005数据库教程(手把手教程)
步骤一: 在连接数据库之前必须保证SQL Server 2005是采用SQL Server身份验证方式而不是windows身份验证方式.如果在安装时选用了后者,则重新设置如下: 打开SQL Serve ...
- [转]asp.net导出数据到Excel的三种方法
原文出处:asp.net导出数据到Excel的几种方法(1/3) .asp.net导出数据到Excel的几种方法(2/3).asp.net导出数据到Excel的几种方法(3/3) asp.net导出到 ...
- jsp连接Sql Server 2000数据库
testsqlserver.jsp如下: <%@ page contentType="text/html;charset=gb2312"%> <%@ page i ...
- 远程连接SQL Server 2005数据库
由于项目需要,我要远程连接到一台团队服务器上的SQL Server 2005数据库.但是试了几次都没有成功,后来在网上搜了很多相关资料终于搞定了,这里把它总结一下. 确保服务器端的数据库中存在sa. ...
- SQL SERVER 2000数据库置疑 紧急模式
SQL SERVER 2000数据库,服务重启之后系统库以外的其它库都会出现置疑(置疑之前没有备份的库.除非是置疑前一秒刚备份完,或者是备份完没有再使用,可以直接恢复): 1.停掉SQL SERVER ...
最新文章
- 后盾网php多少钱_复合排水网价格多少钱
- C++迭代器iterator
- Mysql修复损坏表并写脚本自动修复
- python中文编码-Python中文乱码(转)
- 检查卷位图时发现损坏怎么修复_中频弯管严密性如何测试?怎么修复中频弯管?...
- oracle optimizer_features_enable,Oracle Optimizer:迁移到使用基于成本的优化器—–系列2.1-数据库专栏,ORACLE...
- python决策树分类 导入数据集_BPNN、决策树、KNN、SVM分类鸢尾花数据集Python实现...
- html非封闭标签,自封闭的html标签
- javadoc解析成java 生成 api文档
- 利用spring的CommonsMultipartResolver上传文件
- SharePoint 2010 中型场(Farm)——性能研究(来自DeLL技术中心博客)
- 乡镇医院计算机管理,乡镇卫生院管理系统
- XXX集团财务决策支持系统的起因(系列二)
- MSNP18协议分析(一)--- MSN协议介绍
- 从高德地图获取城市地铁线路+站点
- HUST算法实践_POJ3233
- npi阶段是什么意思_NPI阶段发现的重要性论述
- 根据生日自动计算年龄
- 检查nmos管是否损坏
- 【C语言】控制台窗口图形界面编程(八):键盘事件
热门文章
- 第十二课:实验二 循环链表实验
- 写入sql时间_一问SQL优化就无从藏身?那只是你对原理的精髓掌握不深
- Unity 编辑器知识(—)如何绘制色块
- python中exit的作用_python中,exit,return,sys.exit()等的区别与使用方法 | 学步园
- MCU串行通讯和并行通讯的区别以及UART的理解
- Debug时,出现Unable to evaluate the expression Cannot find xxx
- 4.自定义的Spring Boot Starters
- 使用util.js处理表格
- Spring源码之ApplicationContext(四)功能补充
- 【渝粤教育】21秋期末考试社会学概论10082k1