C#--配置文件Web.config,數據庫連接串 ConnectionStrings和AppSettings的區別

今天用之前的類庫調試程序出現了以下問題

System.InvalidOperationException: ConnectionString 屬性尚未初始化。
   在 System.Data.OracleClient.OracleConnection.PermissionDemand()
   在 System.Data.OracleClient.OracleConnectionFactory.PermissionDemand(DbConnection outerConnection)
   在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   在 System.Data.OracleClient.OracleConnection.Open()
   在 DBUtility.DbHelperOra.PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, String cmdText, OracleParameter[] cmdParms) 位置 C:\Documents and Settings\zzw\My Documents\Visual Studio 2005\Projects\webservicetest\DBUtility\DbHelperOra.cs:行號 541
   在 DBUtility.DbHelperOra.Query(String SQLString, OracleParameter[] cmdParms) 位置 C:\Documents and Settings\zzw\My Documents\Visual Studio 2005\Projects\webservicetest\DBUtility\DbHelperOra.cs:行號 491
   在 Dal.StudentDal.GetModel(String SNO) 位置 C:\Documents and Settings\zzw\My Documents\Visual Studio 2005\Projects\webservicetest\DAL\StudentDal.cs:行號 56
   在 Service.CheckSno(String sno) 位置 f:\zzw\Project\WebSite3\App_Code\Service.cs:行號 50
   在 Service.SearchCardID(String sno) 位置 f:\zzw\Project\WebSite3\App_Code\Service.cs:行號 32

問題是說我的connectstring屬性尚未初始化,一看就知道是數據庫的連接上出了問題。找了好久,問題的原因也很簡單,
就是把ConnectionStrings和AppSettings混合用了,因爲之前的類庫中用的是AppSettings來調用的。所以出現這樣的問題
也在情理之中。趁機我也正好去了解ConnectionStrings和AppSettings到底有什麼區別。

AppSettings是ASP.NET1.1時期用的,在.NET Framework 2.0中,新增了ConnectionStrings.

1.<connectionStrings>

<connectionStrings>
<add name="ConnectionStringName" connectionString="Data Source=服務器名;Initial Catalog=數據庫名;User ID=用戶;Password=密碼"
providerName="System.Data.SqlClient" />
</connectionStrings>

或是

<connectionStrings>
<add name="ConnectionStringName" connectionString="sever=服務器名;database=數據庫名;User ID=用戶;Password=密碼"
providerName="System.Data.SqlClient" />
</connectionStrings>

在 裏,在頁面還可以這樣引用<%$ ConnectionString:Name%>.

2.<appSettings>

<add key="connectionstringName" value="data source=服務器名或IP;initial catalog=數據庫名;persist security info=False;user id=用戶;password=密碼;packet size=4096">
</add>

1)AppSettings 是在2003中常用的,ConnectionStrins是2005中常用的.
2)使用ConnectionString的好處:
第一:可將連接字符串加密,使用MS的一個加密工具即可。
第二:可直接邦定的數據源控件,而不必寫代碼讀出來再賦值給控件。
第三:可方便的更換數據庫平臺,如換爲Oracle數據庫,只需修改providerName。
第四: ConnectionStrings最主要用於數據庫連接,而AppSettings主要用於Asp.net應用程中的一些配置信息。比如上傳文件的路徑等。
3)寫在 中用System.Configuration.ConfigurationManager.AppSettings[“name”]檢索值。
寫在 中用System.Configuration.ConfigurationManager.ConnectionStrings[“name”]檢索值。

.
.
在 .NET Framework 2.0中,ConfigurationManager類新增了兩個屬性AppSettings和ConnectionStrings專門用來獲取配置文件AppSettings和ConnectionStrings節的數據,使用方法如下:

using System.Configuration;
public partial class _Default : System.Web.UI.Page  
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = ConfigurationManager.ConnectionStrings["connectionStringsName"].ToString();
        Label2.Text = ConfigurationManager.AppSettings["appSettingsName"].ToString();
    }
}

和這個的區別
1.<connectionStrings>

<connectionStrings>
<add name="SYXTConnectionString" connectionString="Data Source=LEIKE;Initial Catalog=SYXT;User ID=sa;Password=sa"
providerName="System.Data.SqlClient" />
</connectionStrings>

2.<appSettings>

<add key="connectionstring1" value="data source=192.168.123.201;initial catalog=webmedlink;persist security info=False;user id=sa;password=KSDChagd2004;packet size=4096">
</add>

兩者的區別:
1、 AppSettings連接字符串的屬性名爲“key”,在ConnectionStrings中連接字符串的屬性名爲“name”。
2、 檢索值不同
ConnectionStrings所使用如下代碼來檢索值
System.Configuration.ConfigurationManager.ConnectionString[“ConnectionString”].ConnectionString;
而AppSettings通過如下代碼來檢索值
System.Configuration.ConfigurationManager.AppSettings[“ConnectionString”]

原文鏈接:
介紹的很詳細 : https://blog.51cto.com/zhoufoxcn/166441
https://blog.csdn.net/mascf/article/details/43669257
https://www.cnblogs.com/bindot/archive/2013/03/07/def.html
https://www.cnblogs.com/mikemao/archive/2009/02/02/1382694.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章