本帖最后由 tasolla 于 2011-04-03 18:23:00 编辑

解决方案 »

  1.   

    静态方法和静态变量是两码事...你们老师也是个半瓶子,这问题和IM没有半毛钱关系...在OOP中静态成员其实是不应该存在的,但是工程方法是不讲八股文的,需要就可以有...但是有必要的设计原则防止滥用...
      

  2.   

    1. 这个问题可以和IM没有关系
    2. 可以这样
    public static SqlConnection connection; //然后再方法内部实例化
    千万不能这样
    public static SqlConnection connection = new SqlConnection(connString);否则多个用户并发的时候死的很难看
      

  3.   

    我由糊涂了,不太明白这个和IM可以没有关系是什么意思,比如如果是个管理系统之类的项目,我就可以写成static SqlConnection 是吗?我想上课时所指的就是你这个什么“并发”之类的问题,然后我就是并不明白,如果是IMDBHelper类为什么不能写成
    public static SqlConnection connection = new SqlConnection(connString);啊,为什么会死? 你所指的多用户并发就是恰好多用户同一时间发来IM消息吗?
      

  4.   

    如果所有的用户都用的是同一个数据库连接现在A用户在执行一个独占连接的操作(比如DataReader),那么其他用户的数据库操作就可能都失败可以把这个静态连接在方法内部实例化,比如class DBHelper
    {public static SqlConnection connection = null;public static int ExecuteNonQuery(...)
    {
     connection = new SqlConnection(connString);
     ...
    }
    }这样每一个数据库连接都是一个新的连接,就可以避免此问题