• Web.Config中数据库连接字符串解析


    在ASP.NET中,通过Web.config,你可为使用 <appSettings> 标记,在这个标记中,你可用 <add ... /> 标记定义0到多个设置。本文中我们

    主要讨论了如何使用web.config来配置一个web应用程序中的数据库连接。

    一.基本使用
    web.config文件是标准的xml文件,我们可以使用它来为一台机器下的每一个web应用程序或某个应用程序或一个目录下的asp.net页面来进行设置,当然,它也可以为一个单独的web页面进行设置。
    SqlServer连接配置:
    <add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;min pool size=5;max pool size=512;Integrated

    Security=True;AttachDBFilename=|DataDirectory|TimeTracker.mdf;User Instance=true" />

    <add name="MDM" connectionString="Data Source=10.21.17.17,22\ND0;Initial Catalog=MDM_V2;Persist Security Info=True;User

    ID=sa;Password=Lenovo!123" providerName="System.Data.SqlClient";min pool size=5;max pool size=512;/>

    SqlConnectionStringBuilder实例化时,要用到connectionString,
    如:SqlConnectionStringBuild builder = new SqlConnectionStringBuild(connectionString)。

    Oracle连接配置:
    http://www.connectionstrings.com/oracle

    参数说明:

    1.Data Source
    SqlConnectionStringBuilder的DataSource属性,对应connectionString中的Data Source,“Data Source”可以由下列字符串代替:

    “server”,“address”,“addr”和“network address”。Data Source=.\SQLExpress也可以写成这样Data Source=(local)\SQLExpress。

    2.Integrated Security
    SqlConnectionStringBuilder的IntegratedSecurity属性,对应connectionString中的Integrated Security,“Integrated Security”可以

    写成“trusted_connection”,为true时,使用当前的 Windows 帐户凭据进行身份验证,为false时,需要在连接中指定用户 ID 和密码。

    3.AttachDBFilename
    SqlConnectionStringBuilder的AttachDBFilename属性,对应connectionString中的AttachDBFilename,“AttachDBFilename”可以写成“extended properties”,“initial file name”。AttachDbFileName属性指定连接打开的时候动态附加到服务器上的数据库文件的位置。

    这个属性可以接受数据库的完整路径和相对路径(例如使用|DataDirectory|语法),在运行时这个路径会被应用程序的App_Data目录所代替。

    4.User Instance
    SqlConnectionStringBuilder的UserInstance属性,对应connectionString中的User Instance ,该值指示是否将连接从默认的 SQL Server Express 实例重定向到在调用方帐户之下运行并且在运行时启动的实例。UserInstance=true,在这种情况下,SQLServerExpress为了把数据库

    附加到新的实例,建立一个新的进程,在打开连接的用户身份下运行。在ASP.NET应用程序中,这个用户是本地的ASPNET帐号或默认的

    NetworkService,这依赖于操作系统。为了安全地附加非系统管理员帐号(例如ASP.NET帐号)提供的数据库文件,建立一个独立的SQLServer用户实例是必要的。

    5.min pool size=5;max pool size=512;
    数据库连接池最小连接数min pool size,数据库连接池最大连接数max pool size.

    6.DataDirectory是什么?

    asp.net  2.0有一个特殊目录app_data,通常Sql  server  2005  express数据文件就放在这个目录,相应的数据库连接串就是:
    connectionString="……  data  source=.\SQLEXPRESS;Integrated  Security=SSPI;AttachDBFilename=|DataDirectory|data.mdf;User 

    Instance=true"这里有一个DataDirectory的宏,它表示什么意义呢?

    DataDirectory是表示数据库路径的替换字符串。由于无需对完整路径进行硬编码,DataDirectory  简化了项目的共享和应用程序的部署。例如,无需使用以下连接字符串: 
    "Data  Source=  c:\program  files\MyApp\app_data\Mydb.mdf" 
    通过使用|DataDirectory|(包含在如下所示的竖线中),即可具有以下连接字符串: 
    "Data  Source  =  |DataDirectory|\Mydb.mdf" 。

    不仅仅是Sql server 2005 express中使用,也可以在其它的文件数据库中使用,例如Sqllite数据库文件的连接字符串:

    <add  name="DefaultDB" 
    connectionString="DriverClass=NHibernate.Driver.SQLite20Driver;Dialect=NHibernate.Dialect.SQLiteDialect;Data 

    Source=|DataDirectory|\data.db3" />

    7.connect timeout= 9000
    与其他 .NET Framework 数据提供程序(SQL Server、OLE DB 和 ODBC)中的 Connection 对象不同,OracleConnection 不支持

    ConnectionTimeout 属性。使用属性或在连接字符串中设置连接超时没有效果,而且返回的值总是零。OracleConnection 也不支持 Database

    属性或 ChangeDatabase 方法。


    二.配置继承
    如:网站的主目录是\inetpub\wwwroot\,那么我们将web.config放置于其下,那么这个网站中的应用程序将被web.config中的设置所影响。

    三.使用配置
    在程序中,你可以使用以下代码来使用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"];

    四.设置不同子目录下应用程序的数据库链接
    这是一个很有意思的方法,在设置前,先说明一下它的用途:
    如果在一个虚拟目录下有多个子目录,每一个子目录下下的web应用程序都需要连接不同的数据库,这如何做呢?

    1.是在每一个子目录下分别建立一个web.config,用它来设置这个目录下的数据库连接。但这种方法的问题是需要维护每一个了目录下的web.config。

    2.是只在虚拟目录下建立一个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>
    注:上例中news、bbs分别是虚拟目录下的子目录。


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


     

  • 相关阅读:
    DS博客作业03--树
    DS博客作业02--栈和队列
    DS博客作业02--线性表
    c博客06-2019-结构体&文件
    C博客作业05--2019-指针
    C语言博客作业04--数组
    c语言博客作业03--函数
    C语言博客作业02--循环结构
    深入理解Java线程池原理
    Offer快到碗里来——聊聊线程池
  • 原文地址:https://www.cnblogs.com/a311300/p/1656881.html
Copyright © 2020-2023  润新知