在.Net2.0中增加了新的数据库连接字符串的绑定语句," ConnectionString="<%$ ConnectionStrings:SomeValue %>",我在一个项目中遇到这样一个问题,一套系统有两个结构一样的Sql Server数据库,这两个数据库共用一个系统代码,如何在设计中动态的选择数据库连接信息登录相应的数据库呢?例如在Web.config中有如下的设置:

VS2005中如何动态设置数据库连接信息? <connectionStrings>
VS2005中如何动态设置数据库连接信息?        
<add name="cc_2005" connectionString="Data Source=cc;Initial Catalog=cc_2005;Integrated Security=True" providerName="System.Data.SqlClient"/>
VS2005中如何动态设置数据库连接信息?       
<add name="cc_2006" connectionString="Data Source=cc;Initial Catalog=cc_2006;Integrated Security=True" providerName="System.Data.SqlClient"/>
VS2005中如何动态设置数据库连接信息?  
</connectionStrings>

        那么如何在页面视图中如何动态的选择这个连接字符串呢?首先ConnectionString="<%$ ConnectionStrings:SomeValue %>"不支持数据绑定,那么我想到用ConnectionString="<%# ConnectionStrings:SomeValue %>"这个数据绑定,因此增加一个静态类变量,用来返回登录的数据库连接信息,代码如下:

VS2005中如何动态设置数据库连接信息?public class GetSqlConnection
}

        在首页Login.aspx登录页面的代码:
VS2005中如何动态设置数据库连接信息?//选择年份,返回选择的数据库
VS2005中如何动态设置数据库连接信息?
    private void GetSqlStr()
    }

在页面视图中设置:
VS2005中如何动态设置数据库连接信息?<asp:SqlDataSource ID="SqlDataOrder" runat="server"  ConnectionString="<%# GetSqlConnection.SqlStr %>" SelectCommand="SELECT *  FROM [Order]" ></asp:SqlDataSource>


        最后运行程序,显示“ConnectionString 属性尚未初始化”,说明ConnectionString并没有接收到变量值,查找分析后发现<%#   %>这种绑定是在该控件执行数据绑定后才会执行,用以下代码即可:

VS2005中如何动态设置数据库连接信息?  protected void Page_Load(object sender, EventArgs e)
    }

        这样ConnectionString才接收到数据库连接字串值,程序才正常执行,当然也可能在.CS中直接指定 
                        SqlDataOrder.ConnectionString = GetSqlConnection.GetSqlDb(); 
        总之这样可以实现动态设置数据库的连接信息,目前是一个解决方法,不知有没有更好的。


 

相关文章:

  • 2021-05-25
  • 2021-10-21
  • 2022-01-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-10
  • 2021-10-08
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
相关资源
相似解决方案