数据访问层如何实现全局变量

zzzzzz7 2004-08-29 10:39:24
使用sql server数据库,每次调用数据访问层都需要新建数据库连接,如果数据库服务器的ip发生改变,能否将ip在数据层保存为全局变量,动态生成连接字符串?

我有两个办法但都不是很满意:

1、数据层的实现方法中统统加上一个服务器ip参数,在外观层保存全局变量。

2、做一个信息存放文件比如ini文件存放ip,每次生成连接字符串都从该文件中读取信息,这个方法频繁操作文件是不是会降低性能?
...全文
203 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
nodding23 2004-08-30
  • 打赏
  • 举报
回复
可以尝试存在一个XML文件里,然后读出其值
vzxq 2004-08-30
  • 打赏
  • 举报
回复
存在webconfig安全
1979xt 2004-08-30
  • 打赏
  • 举报
回复
用ini文件,方便又简单。我以前的几个WebService项目都是用的这种方法。
  • 打赏
  • 举报
回复
上面的方法说的对,可以把一些全局信息放入.config配置文件里面。不过还有一个WinForm/WebForm通用的办法,用单件模式做全局类。

像Java/C#这样完全符合OOP规则且拥有CG的语言没有全局变量这个概念,就是说你根本无法知道定义在内存中的全局变量什么时候被CG给Cut掉所以只有利用类的办法来返回全局信息。
这个办法适用于处理/返回许多信息所用,如果仅返回类似数据库连接串这样的单个无需处理的信息,还不如放在资源文件里调用方便。

下面是代码例子,一个全局类,作用是读取一个自定义的配置文件,用属性返回各种配置信息:

public sealed class Config
{
private string _info; // 可以加许多变量来保存信息
private static Config config;

private Config() // 私有的构造器,保证此类无法利用new来建立实例。
{
XmlDocument doc = new XmlDocument(...); // 读取定义的配置文件
// 开始处理xml文件内容
XmlNode info = doc.SelectSingleNode(...) // 读取节点
_info = info.Attribute[...].InnerText;

// 可以处理更多的内容
}

public static Config Instance
{
get
{
if(config == null)
{
config = new Config();
return config;
}
else
return config;
}
}

public string Info
{
get{ return _info;}
}
}

使用方法
sring s = Config.Instance.Info;
NoReady 2004-08-30
  • 打赏
  • 举报
回复
如果是WEB的,就web.config
如果是WIN的,就app.config(这个文件在编译时会被编译成:程序名称.exe.config)
yzh3000 2004-08-30
  • 打赏
  • 举报
回复
如果是winform的话可以写在注册表或者文件里
webform最方便的就是写在webconfig文件里,想安全点进行加密存放和取
使用方法
在webconfig文件里的<configuration>下(一定要紧跟着)写入
<appSettings>
<add key="StrConnect"value="server=localhost;uid=sa;pwd=sa;database=Aim_Manage"></add>
</appSettings>
key相当与标识,value是值
要获取这个值
string strConnect = System.Configuration.ConfigurationSettings.AppSettings["StrConnect"];
这样就可以了,如果有多个变量可以放多个<add></add>
zzzzzz7 2004-08-29
  • 打赏
  • 举报
回复
能说的详细一点吗?是不是需要做成静态的成员函数或者变量?
wangrenda 2004-08-29
  • 打赏
  • 举报
回复
放到类里winweb都一样
zyhxh 2004-08-29
  • 打赏
  • 举报
回复
up..up..........up.............
zzzzzz7 2004-08-29
  • 打赏
  • 举报
回复
谢谢
如果我用的不是web窗体,而是windows窗体呢,并且要求不能改动源代码
pingnt 2004-08-29
  • 打赏
  • 举报
回复
有两种更有效的办法:
1)将ip信息放在WEB.CONFIG文件中.
2)将ip信息写在一个类中.
以上两中方法都可以实现其它多个文件的共享读取,如果要更改其内容,也只需修改一个地方.
noahart 2004-08-29
  • 打赏
  • 举报
回复
写在web.config里
或者自定义配置文件里

62,046

社区成员

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

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

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

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