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了,呵呵。