您的位置:首页 > 其它

连接字符串到底哪个有效?一个小的测试

2008-03-24 19:46 288 查看
之前我曾经发帖子询问过这个问题,发完帖子后自己测试了一下,得出了答案,但是最近项目组又有人提出这个问题,有点怀疑自己当初的测试代码。重新测试一下


问题:

项目中,给一个解决方案分层,在解决方案下,把数据库持久层(Persistence)作为一个项目。

在Persistence层中创建强类型的Adapter,会自动创建一个数据库的连结字符串,自动存放在app.config里面和setting.settings里面(貌似两个文件的连结字符串是关联的,改一个另外一个自动修改)

下面是问题出来了:

数据库连接字符串放在Persistence层:如果编译以后成Persistence.DLL则没有办法在运行的时候修改数据库连接了。 这样设计的话,我怎么样把连结字符串改在WEB.config里面以便运行时修改修改?NHIBERNATE可以自动调用运行域的配置文件,强类型构建的Dataset可以吗?

测试过程

1、数据准备:把本机Sqlserver中Northwind数据库Products表复制到 Pubs数据库中。用Update语句更新Pubs.Products表中ProductName都更改为"npubs"。

2、在测试项目Util层新建QueryPrductsAdpter.xsd数据库操作强类型。新建一个数据库连接NorthwindConnectionString。操作过程会在Util/App.Config中添加


<add name="Util.Properties.Settings.NorthwindConnectionString"


connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True"


providerName="System.Data.SqlClient" />

新增加一个一个TableAdpater,取得Products表中的所有数据。命名为GetData();

3、在Web层添加测试页面,页面添加GridView1。

填写代码


protected void Page_Load(object sender, EventArgs e)




...{




ProductsTableAdapter pAdpter = new ProductsTableAdapter();


GridView1.DataSource = pAdpter.GetData();


GridView1.DataBind();


}

4、运行,结果如图


5、在Web.config里面添加


<add name="Util.Properties.Settings.NorthwindConnectionString"


connectionString="Data Source=localhost;Initial Catalog=pubs;Integrated Security=True"


providerName="System.Data.SqlClient" />

名字一样,但是连接数据库变成了Pubs。

6、运行结果如图



显然,Web.Config的数据库连接字符串替代了App.Config里的。

7、更改Web.Config的名字,结果又是步骤4的图


结论:

如果在WEB.Config里面有Persistence层App.config同样名字的的connectString,则按照web.config里面的来,如果没有,则按照ADO的app.config来.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: