连接多个数据库问题

totodele 2010-04-30 11:52:47
static string ConnectionString1 = System.Configuration.ConfigurationSettings.AppSettings["ConnString"].ToString();
static string ConnectionString2 = System.Configuration.ConfigurationSettings.AppSettings["ConnString1"].ToString();
static string ConnectionString3 = System.Configuration.ConfigurationSettings.AppSettings["ConnString2"].ToString();

static SqlConnection conn;

public static SqlConnection GetConnection()
{
//获取所有配置信息
NameValueCollection coll = ConfigurationSettings.AppSettings;
//配置信息的键数组
string[] keys = coll.AllKeys;
string str = null;
switch ()//里面怎么写 我连接的多个库key
{
case "ConnString":
str = ConnectionString1;
break;
case "ConnString1":
str = ConnectionString2;
break;
case "ConnString2":
str = ConnectionString3;
break;
}

return conn = new SqlConnection(str);
}
/// <summary>
/// 执行增删改
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static bool ExecuteUpdate(string sql)
{
GetConnection();
try
{
using (SqlCommand comm = new SqlCommand(sql,conn))
{
conn.Open();
int i = comm.ExecuteNonQuery();
return i > 0;
}
}
catch
{
conn.Close();
return false;
}
}
...全文
392 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
xrongzhen 2010-04-30
  • 打赏
  • 举报
回复

static SqlConnection conn;
//添加参数
public static SqlConnection GetConnection(string strConnnectionString)//这个地方传入你需要用的连接字串
{
//获取所有配置信息
NameValueCollection coll = ConfigurationSettings.AppSettings;
//配置信息的键数组
string[] keys = coll.AllKeys;
string str = null;
switch (strConnnectionString)//里面怎么写 我连接的多个库key
{
case "ConnString":
str = ConnectionString1;
break;
case "ConnString1":
str = ConnectionString2;
break;
case "ConnString2":
str = ConnectionString3;
break;
}

return conn = new SqlConnection(str);
}
wanghuaide 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 kinglot 的回复:]

构造函数接收key不就OK了吗?
public class dbhelper
{
private string _connecitonstring;
//无参返回默认的数据库连接
public dbhelper()
{
_connectionstring = configurationsettings.appsettings["connstr"];
}
//有参返回……
[/Quote]
试试这个
renren6250 2010-04-30
  • 打赏
  • 举报
回复
工程模式实现.
fwacky 2010-04-30
  • 打赏
  • 举报
回复

//这样就调用了 ConnString1的数据了!
ExecuteUpdate("delete from 表名 where id=12 ","ConnString1");

一克代码 2010-04-30
  • 打赏
  • 举报
回复


连接时
你可以写一个类啊
判断需要接那个数据库!
然后写两个DBHelps类

我之前做过连接sql和access的!

我用的是工厂实现的!
fwacky 2010-04-30
  • 打赏
  • 举报
回复

static string ConnectionString1 = System.Configuration.ConfigurationSettings.AppSettings["ConnString"].ToString();
static string ConnectionString2 = System.Configuration.ConfigurationSettings.AppSettings["ConnString1"].ToString();
static string ConnectionString3 = System.Configuration.ConfigurationSettings.AppSettings["ConnString2"].ToString();

static SqlConnection conn;

public static SqlConnection GetConnection(string strkey)
{
//获取所有配置信息
//NameValueCollection coll = ConfigurationSettings.AppSettings;
//配置信息的键数组
//string[] keys = coll.AllKeys;
//string str = null;
switch (strkey)//里面怎么写 我连接的多个库key
{
case "ConnString":
str = ConnectionString1;
break;
case "ConnString1":
str = ConnectionString2;
break;
case "ConnString2":
str = ConnectionString3;
break;
}

return conn = new SqlConnection(str);
}
/// <summary>
/// 执行增删改
/// </summary>
/// <param name="sql"></param>
/// <param name="strkey">这个就是你要传是那个数据库了</param>
/// <returns></returns>
public static bool ExecuteUpdate(string sql,string strkey)
{
GetConnection(strkey);
try
{
using (SqlCommand comm = new SqlCommand(sql,conn))
{
conn.Open();
int i = comm.ExecuteNonQuery();
return i > 0;
}
}
catch
{
conn.Close();
return false;
}
}
jiaxiaoguang1989 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 totodele 的回复:]
我的意思很简单就是想在一个程序中实现连接多个数据库
配置文件中这样写的;
<appSettings>
<add key="ConnString" value="server=.;database=UFSystem;Integrated Security=True"/>
<add key="ConnString1" value="server=.;database=UFDATA_99……
[/Quote]
可以新建个类库,吧要定义的链接对象放进去 ,从逻辑层调用的时候把链接传进来,当然数据层记得参数要有链接啦
totodele 2010-04-30
  • 打赏
  • 举报
回复

fangyuantdy你的办法很好 mark
kinglot 2010-04-30
  • 打赏
  • 举报
回复
构造函数接收key不就OK了吗?
public class dbhelper
{
private string _connecitonstring;
//无参返回默认的数据库连接
public dbhelper()
{
_connectionstring = configurationsettings.appsettings["connstr"];
}
//有参返回对应的数据库连接字符串
public dbhelper(string connkey)
{
_connectionstring = configurationsettings.appsettings[connkey];
}
public int ExecuteQuery(string strSql)
{
using(sqlconnection conn = new sqlconnection(_connectionstring))
{
conn.open();
}
}
}
你界面上要用哪个连接,你就传哪个Key给类就行了。dbhelper db = new dbhelper("connectionstring1");
fangyuantdy 2010-04-30
  • 打赏
  • 举报
回复
根据KEY去找VALUE啊,楼主说下整个系统为什么要用多数据库,不明白目的没办法帮你
totodele 2010-04-30
  • 打赏
  • 举报
回复
比如说我登陆的时候用的是 ConnString 连接的 我进入程序后 又要用ConnString1 这时候 应该怎么用
if 去进行判断呢

if()
{
return conn = new SqlConnection(ConnectionString);
}
else if()
{
return conn = new SqlConnection(ConnectionString);
}
.
.
liuyileneal 2010-04-30
  • 打赏
  • 举报
回复
不就是三个连接么,直接用if不就行了么?用switch挺麻烦的看着
fangyuantdy 2010-04-30
  • 打赏
  • 举报
回复
public static SqlConnection GetConnection()
{
不会写了
}
这个返回的是一个SqlConnection 对象,但是你又要连接多个数据库,这个是不是有点问题啊
改成public static SqlConnection[] GetConnection()?
totodele 2010-04-30
  • 打赏
  • 举报
回复
我的意思很简单就是想在一个程序中实现连接多个数据库
配置文件中这样写的;
<appSettings>
<add key="ConnString" value="server=.;database=UFSystem;Integrated Security=True"/>
<add key="ConnString1" value="server=.;database=UFDATA_999_2005;Integrated Security=True"/>
<add key="ConnString2" value="server=.;database=UFSub;Integrated Security=True"/>
</appSettings>


类里面 :
static string ConnectionString1 = System.Configuration.ConfigurationSettings.AppSettings["ConnString"].ToString();
static string ConnectionString2 = System.Configuration.ConfigurationSettings.AppSettings["ConnString1"].ToString();
static string ConnectionString3 = System.Configuration.ConfigurationSettings.AppSettings["ConnString2"].ToString();

static SqlConnection conn;

public static SqlConnection GetConnection()
{
不会写了
}
lyvscf 2010-04-30
  • 打赏
  • 举报
回复
只能选其一撒? 你想一个程序连接同时连接多个数据库?
我汗、、、
如果是选其一的话 那这个就需要你传一个
那么就

string[] keys = coll.AllKeys;
string str = null;
switch (keys[0]or keys[1] or keys[2])//里面怎么写 我连接的多个库key
{
case "ConnString":
str = ConnectionString1;
break;
case "ConnString1":
str = ConnectionString2;
break;
case "ConnString2":
str = ConnectionString3;
break;
}

fangyuantdy 2010-04-30
  • 打赏
  • 举报
回复
楼主说清楚你要实现的功能啊,遍历出来了配置的所有数据库连接之后想干啥?
wang5225 2010-04-30
  • 打赏
  • 举报
回复
貌似楼主的问题是. 怎样让程序自动去连接 操作相关 的数据库..

这必然是需要做分支判断的.. 可是这个判断逻辑怎么获得呢?

我想不出什么好办法...

写一个配置文件 把所有操作数据库的方法都和数据库关联上么?


lester19872007 2010-04-30
  • 打赏
  • 举报
回复
switch (str)
lester19872007 2010-04-30
  • 打赏
  • 举报
回复
楼主什么意思?

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧