我的是三层结构的.net项目。
 要根据母板页上面的下拉列表选择连接三个不同的数据库。
 测试库。正常库。5.0版本前数据库。
 如果动态连接数据库的方式是不是违反了三层的不能循环调用的标准啊???
 哪在三层结构下可以实现数据库的动态连接吗?
 要如何实现?
 web.config和DBHelper这两个应该怎么写??
 在线等望眼欲穿啊!!!

解决方案 »

  1.   

    还有。。我用的是SqlServer2005和VS2005沙发。
      

  2.   

    连接不同的数据库时实例化不同是链接不就行了吗
    web.config里可以这样
    <Add key="db1" value="uid=sa,pwd=111,dbname=mydb,addr=."/>
    <Add key="db2" value="uid=sa,pwd=222,dbname=mytestdb,addr=192.168.1.1"/>
    ...
      

  3.   

      还要根据页面上的一个下拉列表选择要连接的数据库呢参数要添加到哪儿?还是DBHelper要在那儿判断啊???
      

  4.   

      <connectionStrings>
        <add name="con1" connectionString="连接字符串"/>
        <add name="con2" connectionString="连接字符串"/>
        <add name="con3" connectionString="连接字符串"/>    
      </connectionStrings>下拉列表选择的时候给连接数据库的方法传递con1,con2,con3之一,然后再连接数据库的方法里读取连接字符串
      

  5.   

    哪DBHelper要怎么写才能得到那个下拉列表的参数呢?
      

  6.   

    写个函数,每次数据库连接选择不3个不同的Key可以不?public void connetSQL(string selectstr) 
       {
          
          根据选
           case 1:
               连接数据库code或者函数
          case 2:
               连接数据库code或者函数
          case 3:
               连接数据库code或者函数
       }<appsettings>
          <add key= "connectionstring1" value="DATABASE...user...pwd........."/>
          <add key= "connectionstring2" value="DATABASE...user...pwd........."/>
          <add key= "connectionstring3"value="DATABASE...user...pwd........."/>
    </appsettings>
      

  7.   

    这是我的DBHlper。。要怎么根据参数选择打开啊?namespace WebERP.DAL
    {    public class DBHelper
        {
            private static SqlConnection sqlCon = null;
            private static DBHelper dbHelper = null;
            private static string sConnString = ConfigurationManager.ConnectionStrings["dd"].ToString();
            //private static string sConnStringDS = ConfigurationManager.ConnectionStrings["DSCSYSConnectionString"].ToString();
            //private static string sConnStringTE = ConfigurationManager.ConnectionStrings["TESTConnectionString"].ToString();
            //private static string sConnStringHK = ConfigurationManager.ConnectionStrings["HKMBConnectionString"].ToString();
            private DBHelper()
            {
                if (sqlCon == null)
                {
                    sqlCon = new SqlConnection(sConnString);
                }
            }
            /// <summary>
            /// 获取DBHelper对象
            /// </summary>
            /// <returns></returns>
            public static DBHelper GetInstance()
            {
                if (dbHelper == null)
                {
                    dbHelper = new DBHelper();
                }
                return dbHelper;
            }
            /// <summary>
            /// 打开连接
            /// </summary>
            private void Open()
            {
                if (sqlCon.State == ConnectionState.Closed)
                {
                    sqlCon.Open();
                }
            }
            /// <summary>
            /// 关闭连接
            /// </summary>
            public void Close()
            {
                if (sqlCon.State == ConnectionState.Open)
                {
                    sqlCon.Close();
                }
            }
            /// <summary>
            /// 根据SQL语句获取第一行第一列数据(Object)
            /// </summary>
            /// <param name="strSql">SQL 语句</param>
            /// <returns></returns>
            public object GetScalar(string strSql)
            {
                SqlCommand sqlCmd = new SqlCommand(strSql, sqlCon);
                this.Open();
                object objResult = sqlCmd.ExecuteScalar();
                this.Close();
                return objResult;
            }
            /// <summary>
            /// 根据SQL语句获取只读只进对象(SqlDataReader)
            /// </summary>
            /// <param name="strSql">SQL 语句</param>
            /// <returns></returns>
            public SqlDataReader GetDataReader(string strSql)
            {
                SqlCommand sqlCmd = new SqlCommand(strSql, sqlCon);
                this.Open();
                SqlDataReader sdr = sqlCmd.ExecuteReader();
                return sdr;
            }
            /// <summary>
            /// 根据SQL语句及相关的参数数组获取只读只进对象(SqlDataReader)
            /// </summary>
            /// <param name="strSql">SQL 语句</param>
            /// <param name="sqlParas">参数数组</param>
            /// <returns></returns>
            public SqlDataReader GetDataReader(string strSql, SqlParameter[] sqlParas)
            {
                SqlCommand sqlCmd = new SqlCommand(strSql, sqlCon);
                sqlCmd.Parameters.AddRange(sqlParas);
                this.Open();
                SqlDataReader sdr = sqlCmd.ExecuteReader();
                return sdr;
            }
            /// <summary>
            /// 根据SQL语句及相关参数获取受影响的行数(int)
            /// </summary>
            /// <param name="strSql">SQL 语句</param>
            /// <param name="sqlParas">参数数组</param>
            /// <returns></returns>
            public int GetNonQuery(string strSql, SqlParameter[] sqlParas)
            {
                SqlCommand sqlCmd = new SqlCommand(strSql, sqlCon);
                sqlCmd.Parameters.AddRange(sqlParas);
                this.Open();
                int count = sqlCmd.ExecuteNonQuery();
                this.Close();
                return count;
            }
            /// <summary>
            /// 根据SQL语句获取受影响的行数(int)
            /// </summary>
            /// <param name="strSql">SQL 语句</param>
            /// <returns></returns>
            public int GetNonQuery(string strSql)
            {
                SqlCommand sqlCmd = new SqlCommand(strSql, sqlCon);
                this.Open();
                int count = sqlCmd.ExecuteNonQuery();
                this.Close();
                return count;
            }
        }
    }
      

  8.   


    public string Keystr = null;
    private static string sConnString = ConfigurationManager.ConnectionStrings["+Keystr+"].ToString();==========================================
    调的时候
    DBHelper dbhelp =new DBHelper();
    dbhelp.Keystr = this.dropdownlist.XXXXXXX.tostring(); 注(dropdownlist值符进来)
    接着调你的连接数据库函数
      

  9.   

    那我开始的时候是打开正常库。。转去测试库转不到啊?为什么啊?
    要不要先把正常库关闭先?怎么关闭?直接用close()方法???