首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

在.NET 中怎么动态连接不同数据库

2012-02-28 
在.NET 中如何动态连接不同数据库在.NET中如何动态连接不同数据库[解决办法]用反射可以看petshop[解决办法

在.NET 中如何动态连接不同数据库
在.NET   中如何动态连接不同数据库

[解决办法]
用反射
可以看petshop
[解决办法]
学习一下“类工厂”的设计模式
参考程序,微软的petshop4
[解决办法]
很简单嘛,应用工厂模式.把数据库联接作接口.再用点反射
给一小段代码参考
public DbDriver()
{
// 获取程序集名称
assemblyName = ConfigurationManager.AppSettings[ "AssemblyName "];
// 获取默认构造器名称
constructor = ConfigurationManager.AppSettings[ "Constructor "];
}
public IDataTask DriveLWordTask()
{
// 建立 IDataTask 对象实例
return (IDataTask)Assembly.Load(assemblyName).CreateInstance(constructor, false);
}
assemblyName是某种具体数据库连接方式的程序集名.改变配置中的程序集名即得到不同的连接方式,不明白就先看下工厂模式
[解决办法]
LZ表达清楚点,不同的数据库是指类型不同,还是数据库名字不同,是什么样的数据库

[解决办法]
我给你一个参考代码,我是影视网站看不同服务器在线情况的
WEB数据库有个ServerList表,存放不同服务器的信息包含数据库用户名和密码
SqlConnection conn = DBconn.openDb();
conn.Open();
SqlDataReader mysdr;
SqlCommand mycmd = new SqlCommand( "select * from ServerList where ServerID= " + this.DdlServer.SelectedValue, conn);
mysdr = mycmd.ExecuteReader();
mysdr.Read();
string ServerIP = mysdr[ "ServerIP "].ToString();
string SQluser = mysdr[ "Sqluser "].ToString();
string SQlpass = mysdr[ "Sqlpass "].ToString();
SqlConnection scon = new SqlConnection( "server= " + ServerIP + ";database=WebMedia;uid= " + SQluser + ";pwd= " + SQlpass + "; ");
SqlCommand scmd = new SqlCommand( "Select a.online_id,b.UserName,C.ProgName,A.PeerIP,a.starttime from Online as a,Customer as b,ProgInfo c where a.Prog_Id=c.Prog_id and a.Customer_ID=b.customer_id and b.username like '% " + this.txtusername.Text + "% ' ", scon);
SqlDataAdapter mysda = new SqlDataAdapter();
mysda.SelectCommand = scmd;
DataSet ds = new DataSet();
mysda.Fill(ds, "UserOnline ");
scon.Close();
DataView mydv = new DataView(ds.Tables[ "UserOnline "]);
this.GridView1.DataSource = mydv;
this.GridView1.DataKeyNames = new string[] { "Online_Id " };
this.GridView1.DataBind();
this.lblOnlineCount.Text =Convert.ToString(mydv.Count);
[解决办法]
你要知道用户选择的数据所在的服务器.

最好给那条数据加一个标记,是哪个数据库.

热点排行