在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
源代码: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没有办法指向不同的类,并调用不同类中的属性与方法。 |
请发表评论