浏览:7032007-11-25 14:00   来自只吃豆芽猪      :

看了 《单件模式 - 你就是我的唯一 - Web.Net 设计模式》

这个文章后一直在想,对比现在手中的项目中操作数据库相关类的代码,想把它改成单件模式的,但在网上找了下,没有太多有关于这方面的描述,比如性能等。。

所以发此一文,看有那位大虾有使用过此模式来创建数据库连接的,及使用此模式创建的连接类有什么问题,在一个并发及数据库依赖很强的系统中是否可以使用此模式呢.

请大家勇猛发言,谢谢

楼主
  5个月前   Jeffrey Zhao      :
搞不懂创建数据库连接怎么能够用单件模式——最多是局部的单件吧。
回复  1楼 回到顶楼 
  5个月前   彭成刚      :
就现在,我在做的系统中,用的数据库还是采用比较传统的3层模式,主要还是看项目功能,保证数据库的开库和关库。。
比如我常这么使用,出错率比较小。。
try
{
string myId = common.FunLib.getcookieId();
DataTable dt = common.FunLib.getUserdt(myId);
this.Icon.ImageUrl = common.FunLib.getmyIcon(dt);
this.NiceName.Text = common.FunLib.getNiceName(dt);
this.pEmail.Text = common.FunLib.getEmail(dt);
this.pBlogUrl.Text = common.FunLib.getBlogUrl(dt);
this.pmySelf.Text = common.FunLib.getSelfPro(dt);
this.myNiceName = common.FunLib.getNiceName(dt);
}
catch
{
common.FunLib.openPage("个人数据读取错误,请重新登录","/login");
}
这样直接取出一个dt,里面就自动关库,自然不会出现什么问题了。。直接把dt就弄出来好了。。
当然每个人都不一样。。方法时时再变,谁知道过两天能不能找到个更好的方法。。
回复  2楼 回到顶楼 
  4个月前   武眉博<活靶子.Net>      :
单件简单的理解为一个类仅有一个实例,并且提供一个全局的访问点访问此实例,也就是说你这样设计数据库连接,就获得了一个类实例来访问数据库,如Connection对象,并不是保证永远就一个数据库连接啊。一般采用建立Connection用完马上关闭,如:
using (SqlConnection cn = new SqlConnection(connectionString))
{
cn.Open();
//do ...
cn.Close();
}
.net 默认对SQLSERVER使用连接池,对于链接字符串相同的链接的SqlConnection实例的请求,先从链接池中找可用的链接,若有可用的,则返回该对象,若无则排队。
参考一下两个链接
http://msdn2.microsoft.com/zh-cn/library/sd2728ad(VS.80).aspx
http://msdn2.microsoft.com/zh-cn/library/8xx3tyca(VS.80).aspx
不过有趣的是,网上有这么个论文http://www.cqvip.com/qk/83066X/200606/23446645.html
但遗憾的是看不到具体内容。
回复  3楼 回到顶楼 
  4个月前   KENNETHBYRON      :
按找你的意见.我觉得不大可能.不可能大项目用
我曾经用过.不过是每一个模块用一个数据库连接
这样可以建几个永久连接.可是意义并不大.我自己都觉得没必要控制.有连接池可以自动完成列队
回复  4楼 回到顶楼 

你还不是小组成员,加入小组以后才能发布新主题!
> 返回“设计模式”


其他话题

1 17295