现在遇到一个问题,就是我写了一个方法。会根据不同客户ID返回不同的数据库链接串。但是,我想在程序中的某个类里设置并初始化sqlconnect对象。其他模块直接调用该对象就可以。不需要每个页面在实例化sqlconnect。但问题是,如何在那个类中获取当前USERID呢?举个例子
a.cspublic class a
{
   SqlConnection conn=new SqlConnection ("xxx"); //就是XXX这里根据URL传来的USERID获取不同链接串}其他模块能够直接用conn如何解决?

解决方案 »

  1.   

    string userID=Request.QueryString["userid"];
      

  2.   


    这个我知道。也许我描述的不准确。现在问题是。其他模块要调用这个公共的CONN。那么这个CONN放到哪里?放到类里?其他页面怎么调用? 不同用户访问,初始化这个CONN会不会冲突?
      

  3.   

    一般是把这个连接字符串放在一个地方,比如一个帮助的Public的静态的string。
    public string connstring = "";其它地方根据这个connstring 去创建Connection。
    一般不会所有的人直接用一个Connection,如果大家同时用,一个人把这个connection关闭了,别人就会出现问题了。这connstring也可以放到数据库的专门的配置表里面去。
      

  4.   

    这个链接串connstring 会 根据不同用户改变的。这个如何处理呢?
      

  5.   

    class Sqlherlp()
    {
    public static void getTable(string id)
    {
    if(id=="564564")
    {
    constr = ""
    }
    }
    }
      

  6.   


    那么每个模块在使用CONN时都要先调用getTable()??岂不是很麻烦?
      

  7.   

    getTable是获得数据表了,你把id传过来,然后根据ID判断使用哪个链接字符串,并把sql字符串传给选择的conn,就可以马上获得你想要的表了
      

  8.   

    那是不是每个要是用CONN的页面都需要调用这个函数?那么太繁琐了。我想用单例模式的方式统一一个入口。
      

  9.   

    你写个方法
    让他返回sqlconnnection 
    通过传值不同的ID
    这样就可以啦
    问题是
    这种需求很怪
    你有几个数据库啦
    这样搞 
    一个网站 了不起几个数据库
      

  10.   

    放到WebConfig里
        /// <summary>
        /// 数据连接类
        /// </summary>
        public class Connection
        {
            /// <summary>
            /// 获得连接对象
            /// </summary>
            /// <returns>返回连接对象</returns>
            public static SqlConnection GetConnection()
            {
                //从配置文件里读取连接字符串
                string conn = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
                return new SqlConnection(conn);
            }
        }
      

  11.   

    或者这样子
    using System;
    using System.Text;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.Odbc;
    using System.Data.OleDb;
    using System.Data.SqlClient;namespace ReagentDal
    {
        /// <summary>
        /// 数据访问类
        /// </summary>
        public class ZhLuDbHelp
        {
            /// <summary>
            /// 获取数据库连接字符串
            /// </summary>
            private string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            /// <summary>
            /// 获取或设置连接字符串
            /// </summary>
            public string ConnectionString
            {
                get { return connectionString; }
                set { connectionString = value; }
            }
            /// <summary>
            /// sqlserver连接对象
            /// </summary>
            private SqlConnection sqlConn;
            /// <summary>
            /// Odbc连接对象
            /// </summary>
            private OdbcConnection odbConn;
            /// <summary>
            /// OleDb连接对象
            /// </summary>
            private OleDbConnection oleConn;
            /// <summary>
            /// 默认构造函数,初始化SqlConnection
            /// </summary>
            public ZhLuDbHelp()
            {
                this.sqlConn = new SqlConnection(connectionString);
            }
            /// <summary>
            /// 构造函数,初始化各种连接对象
            /// </summary>
            /// <param name="type">0 表示 SqlConnection;1表示 OdbcConnection;2 表示 OleDbConnection;其它 表示 SqlConnection</param>
            public ZhLuDbHelp(int type)
            {
                if (type == 0)
                {
                    this.sqlConn = new SqlConnection(connectionString);
                }
                else if (type == 1)
                {
                    this.odbConn = new OdbcConnection(connectionString);
                }
                else if (type == 2)
                {
                    this.oleConn = new OleDbConnection(connectionString);
                }
                else
                {
                    this.sqlConn = new SqlConnection(connectionString);
                }
            }
    }