天天看點

ASP.net2.0中資料庫連接配接字元串

ASP.net2.0中配置 資料庫連接配接字元串

Asp.net 2.0中通常可以将資料庫連接配接字元串儲存于.aspx頁面中,但為了保持一緻性及提高效率可以将ConnectionString屬性儲存于Web.config中,如下所示:

...

<connectionStrings>

    <add name="NorthwindConnectionString" connectionString="Data Source=JYUE/SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"

            providerName="System.Data.SqlClient" />

</connectionStrings>

...

name辨別為字元串名稱

connectionString為具體連接配接字元串

providerName為資料提供程式,本例為SQL資料庫

配置完畢後可以以.aspx頁面中如下形式引用連接配接字元串

<%$ ConnectionStrings:NorthwindConnectionString %>

上面的方法雖然簡便,但安全性不高,ASP.net2.0提供了簡便的加密方法,即使用aspnet_iis.exe指令,該指令位置如下:

C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727

注意,具體情況視系統位置及版本号有所差異

在指令模式下進入該目錄即可運作,完整指令為:

aspnet_iis -pef "connectionStrings" "Web.cofing絕對路徑(注:不需要輸入web.config)"

如果正常會提示“成功”,此時打開Web.config會發現字元串已加密

解密指令為:

aspnet_iis -pdf "connectionStrings" "Web.cofing絕對路徑(注:不需要輸入web.config)"

注意的是加密、解密必須在一台機器上完成。

通過web.config配置資料庫連接配接池

下面講述在VS2005中如何使用web.config配置檔案,進行資料庫的連接配接操作,并啟用SQL Server資料庫的連接配接池,相信對于已經熟悉VS2003的、剛進入05的環境的朋友會有些幫助。

    首先,在05中,預設情況下,并沒有自動為應用程式生成web.config,當第一次運作應用程式的時候,會出現Debuging Not Enabled的提示,點選OK按鈕,會為應用程式生成一個web.config配置檔案。在<configuration>元素中,已經有 了如下兩個節點元素:

 <appSettings/>

 <connectionStrings/>

03 中,資料庫的連接配接配置是在<appSettings/>中通過add key=" connStr " value = " "來指定的;05中,"connectionStrings 元素為 ASP.NET 應用程式和 ASP.NET 功能指定資料庫連接配接字元串(名稱/值對的形式)的集合。在以前的 ASP.NET 版本中,連接配接字元串存儲在 appSettings 中。在 ASP.NET 2.0 中,如會話、成員資格、個性化設定和角色管理器等功能均依賴于存儲在 connectionStrings 元素中的連接配接字元串。您還可以使用 connectionStrings 元素來存儲您自己的應用程式的連接配接字元串。"——SDK。

可以将<connectionStrings/>用下面的代碼替換:

 <connectionStrings>

    <add

      name="CONNSTRING"

      connectionString="data source =localhost;uid =sa;pwd=;database=Book;pooling=true"/>  //注意:pooling也可以在後面通過代碼指定

  </connectionStrings>

應用程式中這樣讀取即可:

    private readonly string SQLCONNECTIONSTRING = ConfigurationManager.ConnectionStrings["CONNSTRING"].ConnectionString;

下面是測試的例子,當然基本的ADO.NET連接配接資料庫的知識要知道。

建立一個DbPooling.aspx,代碼如下:

using System;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public partial class DbPooling : System.Web.UI.Page

{

    private readonly string SQLCONNECTIONSTRING = ConfigurationManager.ConnectionStrings["CONNSTRING"].ConnectionString;

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!Page.IsPostBack)

        {

            ConnectionObject();

            DataSet ds = null;

            for (int i = 0; i < 1000; i++)

            {

                ds = GetCustomers(true);    //true——配置連接配接池

            }

            GridView1.DataSource = ds;      //03中的DataGrid現在是GridView

            GridView1.DataBind();

        }

    }

    private DataSet GetCustomers(bool nStartPooling)

    {

        string connStr = SQLCONNECTIONSTRING + "Pooling=" + nStartPooling.ToString();   //通過傳遞的bool指定是否配置連接配接池

        Label1.Text = connStr;

        SqlConnection conn = new SqlConnection(connStr);

        string cmdText = "SELECT Top 10 * FROM Book";

        SqlDataAdapter da = new SqlDataAdapter(cmdText, conn);

        conn.Open();

        DataSet ds = new DataSet();

        da.Fill(ds);

        conn.Close();

        return ds;

    }

    private void ConnectionObject()

    {

        SqlConnection conn = new SqlConnection(SQLCONNECTIONSTRING);

        string cmdText = "SELECT Count(*) as BookCount FROM Book";

        SqlCommand comm = new SqlCommand(cmdText, conn);

        conn.Open();

        int result = (int)comm.ExecuteScalar();

        Response.Write("Book表的記錄數為:" + result.ToString());

        Response.Write("<br>SQL Server資料庫的連接配接狀态為:" + conn.State.ToString());

        Response.Write("<br>SQL Server資料庫連接配接的通信包的大小為:" + conn.PacketSize.ToString());

        Response.Write("<br>SQL Server資料庫連接配接的資料庫為:" + conn.Database.ToString());

        Response.Write("<br>SQL Server資料庫連接配接的工作站點:" + conn.WorkstationId.ToString());

        conn.Close();

        Response.Write("<br>SQL Server資料庫的連接配接狀态:" + conn.State.ToString());

    }

}

      對于剛剛開始熟悉 VS2005 的朋友來說,很多細節的東西要與03差別,當然,查一下SDK很容易找到異同和解決方法,本文小例針對在05中初次配置web.config遇到的小麻煩 做一總結,詳細的 configuration 操作可以參考SDK了,呵呵。