写了一个webservice,提供几个function都是需要连接数据库查询数据并作返回。
每一个function都要去创建一个数据库连线:[WebMethod(Description = "數據集")]
        public string GetDatastring(string ALine)
        {
            OracleConnection myconn = this.GetConn();
            GetStartTime(ALine);
            DataSet dst = new DataSet();
            string tmpSQL = @"select * from tbltmp where fline='{0}' ";
            tmpSQL = String.Format(tmpSQL, ALine);
            try
            {
                OracleDataAdapter dad = new OracleDataAdapter(tmpSQL, myconn);
                //dad.FillSchema(dst, SchemaType.Mapped, "Temp");
                dad.Fill(dst, "Temp");                    //return dst;                string retv = DNDDSToCDS.AllstringToClientDataSet(dst, "Temp");
                return retv;
            }
            finally
            {
                myconn.Close();
            }
        }
其他的都类似吧。。现在如果每一个function都去创建一个数据库连线。多个程序访问webservice就会有很多个数据库连线(我在服务器上用netstat -n 查看有多个1521的连线(oracle端口号))。
本来采用webservice是为了减少数据库连线数,现在它一个程式就创建这么多连线,肯定是不行的。
所有想请教各位,webservice是否能公用一个数据库连线?(myConn 只使用一个)?
我是刚开始学C#用webservice,所有有些理解错误的地方请大侠理解!并不吝赐教!
谢谢!

解决方案 »

  1.   

    代码里面有关闭。
    myconn.Close();
    可是我在服务器上查看连线数还是会越来越多!
    不知道为什么!
      

  2.   

    GetConn();
    是什么?
    自己创建的>?
      

  3.   


    private OracleConnection GetConn()
            {
                try
                {
                    this._connString = DBConnString.Buf_BuieldDbsConnString();
                    OracleConnection Connection = new OracleConnection(this._connString);
                    Connection.Open();
                    return Connection;
                }
                catch (Exception ex)
                {
                    _ErrorText = ex.Message;
                    throw;
                }
            }这个是为了读取一个自己指定的位置的数据库连线文件。里面包含加密的一些处理!
    为了每次调用方便。所以写成这样!
    我是个C#新手,刚从delphi转的!有些地方解释的不清楚。请谅解!
      

  4.   

    我顶。。
    webservice中能否像winform程序一样。共用一个数据库连线!
    这个该怎么去创建!
    请了解的大侠给点指导!
      

  5.   

    这个问题不是我造成的。。郁闷 - -!
    服务器上有跑另外一个程式!创建了数据库连线没有释放!
    害的我自己找了半天原因!
    看来C#还是要遵循delphi一样的原则,哪里调用哪里释放!
    切记,切记。。