ASP.NET中使用web.config配置web应用程序中的数据库连接

[摘要]:在web.config文件中保存数据库连接配置信息,可以让你无须重新编译应用程序即可更新应用程序的某些属性。当你想把数据库迁移到另一个不同的服务器,你只需要修改web.config文件中的数据库连接配置信息而已,并不需要重新编译和重新部署这个应用程序以适应新的服务器的要求。


你会经常碰到这种情况:几乎在网站的每个页面上,存储一些全局处理信息。理想的做法是将这些信息一次性的集中存储在资料档案库中,而不是在网站的每个页面上都重复这样的操作。比如说数据库连接串就是这样的信息,如果这些信息不是集中存储在特定区域中,而是在网站的每个需要连接数据库的页面上手工输入,可以设想:当数据库连接串改动时将会令人头痛,你必须遍历网站中所有连接数据库的页面去修改!
在ASP.NET中,通过Web.config,你可为使用 <appSettings> 标记,在这个标记中,你可用 <add ... /> 标记定义0到多个设置。本文中我们主要讨论了如何使用web.config来配置一个web应用程序中的数据库连接。

web.config文件是标准的xml文件,我们可以使用它来为一台机器下的每一个web应用程序或某个应用程序或一个目录下的asp.net页面来进行设置,当然,它也可以为一个单独的web页面进行设置。

如:网站的主目录是\inetpub\wwwroot\,那么我们将web.config放置于其下,那么这个网站中的应用程序将被web.config中的设置所影响。
e.g.:
<?xml version="1.0" encoding="gb2312" ?>
<configuration>
 <system.web>
  <compilation defaultlanguage="vb" debug="true" />
  <customerrors mode="remoteonly" defaultredirect="js/error.htm">
   <error statuscode="404" redirect="js/filenotfound.aspx" />
   <error statuscode="500" redirect="js/error.htm" />
  </customerrors>
  <authentication mode="windows" />
  <authorization>
   <allow users="*" />
  </authorization>
  <httpruntime maxrequestlength="4000" usefullyqualifiedredirecturl="true" executiontimeout="45" />
  <trace enabled="false" requestlimit="10" pageoutput="false" tracemode="sortbytime" localonly="true" />
  <sessionstate mode="inproc" stateconnectionstring="tcpip=127.0.0.1:43444" cookieless="false" timeout="20" />
  <globalization requestencoding="gb2312" responseencoding="gb2312" fileencoding="gb2312" />
 </system.web>
 <appsettings>
  <add key="connstring" value="uid=flash;password=3.1415926;database=news;server=(local)" />
 </appsettings>
</configuration>

这里我们讨论一下如何在web.config中设置数据库连接。

1、连接一个数据库:
在web.config中的<configuration>后加入

<appsettings>
    <add key="connstring" 
    value="uid=flash;password=3.1415926;database=news;server=(local)" />
</appsettings>

在程序中,你可以使用以下代码来使用web.config中的设置:

-----vb.net-----
imports system.configuration
dim myvar as string 
 myvar=configurationsettings.appsettings("connstring"
-----c#-----
using system.configuration;
string myvar;
myvar=configurationsettings.appsettings["connstring"];

2、连接多个数据库
同理,那就是使用多个不同的key值来设置

3、设置不同子目录下应用程序的数据库链接
这是一个很有意思的方法,在设置前,先说明一下它的用途:
如果在一个虚拟目录下有多个子目录,每一个子目录下下的web应用程序都需要连接不同的数据库,这如何做呢??
一种方法是在每一个子目录下分别建立一个web.config,用它来设置这个目录下的数据库连接。但这种方法的问题是需要维护每一个了目录下的web.config。

方法二,是只在虚拟目录下建立一个web.config,在它里面设置每一个子目录下的应用程序的数据库连接。说到这里,你会想到上面的第二种方法,使用多个不同的key值来设置,这的确是一个办法。

这里,我想说明的是另一种方法:在虚拟目录下布置web.config,在其中使用location标记,使用同一个key值来连接数据库,这样做的好处很明显,因为用同一个key值,将导致在所有目录下的应用程序中,都可以使用共同的语句来连接数据库,这在程序以后发生位置迁移时,并不用修改程序中连接数据库的语句。
具体设置如下:

<location path="news">
<appsettings>
 <add key="connstring" value="uid=flyangel;password=3.1415926;database=news;server=(local)"  />
 </appsettings>
</location>
<location path="bbs">
 <appsettings>
  <add key="connstring" value="uid=flyangel;password=3.1415926;database=bbs;server=(local)" />
 </appsettings>
</location>
<location path="soft">
 <appsettings>
  <add key="connstring" value="uid=flyangel;password=3.1415926;database=soft;server=(local)" />
 </appsettings>
</location>

注:上例中news、bbs、soft分别是虚拟目录下的子目录。
程序中使用连接时,采用下面的方法:
public function getconnectionstring()
 configurationsettings.appsettings().item("connstring"
end sub

最后需要说明的一点是,为了有效地利用.config文件,你应当创建标准的键名和值定义供所有的应用程序开发人员所用。这样就可以让同一项目的开发人员采用公共的项目设置。这些标准在部署应用程序和将其转化为产品的时候非常有用。

转载于:https://www.cnblogs.com/lishijin/archive/2004/08/09/31631.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c+ +三角函数_C ++中的三角函数

c 三角函数C 三角函数 (C Trigonometric functions) Trigonometric functions are also called circular functions or angle functions or goniometric functions, which are used to trigonometric computations like computing cosine, sine, tangent values. 三角函数也称为…

4邻接、8邻接、m邻接

在认识这些之前&#xff0c;我们首先要认识4领域、8领域 4领域&#xff1a; 像素p的坐标是(x,y)&#xff0c;那么他的4领域坐标N4是&#xff1a;&#xff08;x1,y&#xff09;、(x-1,y)&#xff0c;&#xff08;x&#xff0c;y1&#xff09;、(x,y-1) 8领域&#xff1a; 点p的…

RST_n的问题

有一个灰常郁闷的问题。。。 module CLK_Generater( input CLOCK_100, input RST_n, input Key, output reg [3:0] CLK_DivChoose, );reg [19:0] count; …

java aop注解拦截_Spring AOP 拦截指定注解标识的类或方法

代码DemoAspectComponentOrder(10)public class BidAuthorityProxy {/*** 扫描指定包下的类中使用EnableRoleAuthority注解修饰的类*/Around("within(com.core.annotation.EnableRoleAuthority) && within(com.bid..*)")public Object verifyRoleExecuteComm…

其实我是一个很偏激的人,不信你打我一下试试看

rt转载于:https://www.cnblogs.com/rexhost/archive/2004/09/23/45969.html

python关键字和保留字_或带有Python示例的关键字

python关键字和保留字Python或关键字 (Python or keyword) or is a keyword (case-sensitive) in python, it is a logical operator actually, it is used to validate more than one conditions. It is similar to Logical OR (||) operator in C, C programming. It require…

php的文件包含总结 include require include_once require_once

文件包含相当于将另一个文件的代码全部复制到另一个文件中&#xff0c;然后执行。包含文件很有用&#xff0c;如果您需要在网站的多张页面上引用相同的 PHP、HTML 或文本的话。比如说我们在浏览csdn很多页面中&#xff0c;基本都是看到下面的内容&#xff0c;为了不要每次都要写…

社会生活中的著名法则(z)

社会生活中的著名法则 [摘要]社会生活中的著名法则 一、 马太效应 二、 手表定理 三、 不值得定律 四、 彼得原理 五、 零和游戏原理 六、 华盛顿合作规律 七、 酒与污水定律 八、 水桶定律 九、 蘑菇管理 十、 奥卡姆剃刀定律 十一、 二八法则 十二、 钱的问题  一、马太效应…

判断滚动条是否到达页面的尾部

//取窗口滚动条高度 functiongetScrollTop() { varscrollTop0; if(document.documentElement&&document.documentElement.scrollTop) { scrollTopdocument.documentElement.scrollTop; } elseif(document.body) { scrollTopdocument.body.scrollTop; } returnscr…

python的pass语句_适用于pass语句的Python程序

python的pass语句Prerequisite: pass statement in Python 先决条件&#xff1a; Python中的pass语句 In the below program, we have a string and printing only alphabets and passing the else statement – where the character in not an alphabet. 在下面的程序中&…

php终止脚本执行(exit、die、return)

终止php的脚本执行&#xff0c;我们可以使用exit&#xff0c;die&#xff0c;return 0x01 exit和die&#xff0c; 当程序运行到他们时&#xff0c;直接退出程序&#xff0c;不在运行 <?phpheader(content-type:text/html;charsetutf-8);echo 使用exit前;echo <br>…

Python中的break语句

Python break语句 (Python break statement) Like other programming languages, in python, break statement is used to terminate the loops execution. It terminates the loops execution and transfers the control to the statement written after the loop. 与其他编程…

php的延时sleep函数

语法&#xff1a;sleep&#xff08;秒数&#xff09; <?phpheader(content-type:text/html;charsetutf-8);sleep&#xff08;5&#xff09;;echo 我的名字是DL_one; ?>输出时可以发现要等待一段时间才能输出 sleep函数在代码测试时很有用

25种成为百万富翁的方法

1、做你真正感兴趣的事——你会花很多时间在上面&#xff0c;因此你一定要感兴趣才行&#xff0c;如果不是这样的话&#xff0c;你不合愿意把时间花在上面&#xff0c;就得不到成功。  2、自己当老板&#xff0c;为别人打工&#xff0c;你绝不会变成巨富&#xff0c;老板一心…

java byte数组string_byte数组和String之间的转化

JAVA里面关于byte数组和String之间的转换问题把byte转化成string&#xff0c;必须经过编码。例如下面一个例子:import java.io.UnsupportedEncodingException;public class test{public static void main(String g[]) {String s "12345abcd";byte b[] s.getBytes()…

arcsde 和oracle(双机热备)分布式安装(转载)

环境&#xff1a; oracle10gR2安装在两台服务器上&#xff0c;但只是做双机热备&#xff0c;操作系统均为windows server 2003 sp2 arcsde安装在第三台机器上&#xff0c;操作系统为windows server 2003 sp2 安装步骤&#xff1a; 1、需要在ArcSDE的安装机器上安装Or…

python中文件描述符_Python中的描述符

python中文件描述符In Python, a class that implements a get, set or delete methods for an object is called descriptors. Descriptors are the way to create attributes and add managed attributes to objects. These are used to protect the attributes from changes…

PHP的foeach用法

PHP 4 引入了 foreach 结构&#xff0c;用foreach可以帮助我们简单遍历数组&#xff0c;foreach 仅能用于数组&#xff0c;当用于其它数据类型或者一个未初始化的变量时会产生错误。 其用法为&#xff1a; foreach(数组 as 键 > 值){//循环体}当数组只有值&#xff0c;没有…

不为事务而事务

背景&#xff1a; 最近在做一个项目&#xff0c;需要用到两个第三方组件&#xff1a;北京莲塘语音组件和CMailSever前者作为语音聊天室的二次开发组件&#xff0c;后者用于网站的小型邮件系统二次开发组件 需求&#xff1a; 用户在主程序登陆后&#xff0c;无须再次登陆…

英语学习过程中的几点体会(1)

这几天一直在解决英语学习中的单词问题.确切的说就是积累单词量,在我们这里也不叫单词量,我给它起了个新名称 叫做:音像量 关于音像量的积累.遇到了很多问题. 比如我们找了很多资料,有国内的,国外的.视频,图片.甚至我们还自己做了两版词库.但是每个资料都有不同的问题. 每次开会…