当前位置:编程学习 > C#/ASP.NET >>

静态构造函数创建连接类,会出问题吗?

如果我的连接这样写,在web程序中会出现什么问题?
 public class DbHelper
    {
        private static string strDbConn = "server=local;database=temp;integrated security=SSPI";    
        private static OracleConnection conn = null;

        static DbHelper()
        {
            try
            {
                if(null==con)
                   conn = new OracleConnection(strDbConn);
            }
            catch (Exception ex)
            {
               throw ex;
            }
        }

}
--------------------编程问答-------------------- 只是有点多此一举的判断,那个判断恒为真。 --------------------编程问答-------------------- 如果同时有多个客户端访问数据库是不是会出现连接等待的问题? --------------------编程问答-------------------- 没看懂。
多用户之间并发和你这里的静态构造函数有什么关系。 --------------------编程问答-------------------- 静态的 OracleConnection 有什么用? --------------------编程问答-------------------- 比如,我一个用户在操作数据,那么连接对象被占用,这时候同时还有个用户要操作数据库,能连接? --------------------编程问答-------------------- 避免并发不是弄个静态变量就可以,而是要互斥。互斥可以是线程级、进程级或是锁表。 --------------------编程问答-------------------- Mark 一下。闪人。 --------------------编程问答--------------------
引用 1 楼 wuyazhe 的回复:
只是有点多此一举的判断,那个判断恒为真。


测过吗? --------------------编程问答-------------------- 那也就是说不会影响咯! --------------------编程问答-------------------- 按照c#的运行机制,当程序加载的时候,会在loader heap中加载类型,类的静态成员、方法表和常量。
也就是说实例化时候静态成员是只有一个的。因为它不出现在GC heap中。那么当多个用户操作数据库时
操作的是同一个Connection对象。如果一个用户将connection打开了,其他的用户怎么能够操作它呢? --------------------编程问答-------------------- 估计不会触发重连机制 --------------------编程问答-------------------- 我顶上去
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,