跳轉到內容

ASP.NET/資料庫

來自華夏公益教科書,開放的書籍,開放的世界

ASP.NET 資料庫

[編輯 | 編輯原始碼]

ASP.NET v1.1.4322

資料庫本質上是一個儲存資料的場所。然而理解“資料庫”一詞的關鍵在於,資料庫是一個儲存資料的電子倉庫。資料庫可以包含任何型別的資料(取決於製造商/供應商)。例如,華夏公益教科書網站就是在資料庫中維護的。

資料庫有很多型別:層次資料庫、網路資料庫、關係資料庫、物件資料庫、XML 資料庫。甚至檔案系統或 Excel 都可以被視為資料庫。

最常見的儲存資料結構是表。表中的每一行都是一條記錄,每一列都是一個欄位。表可以透過共享一個共同的欄位與其他表相關聯。這就是所謂的關聯資料庫。

關係資料庫是當今資料庫市場上的主流資料庫。有一些專有的資料庫,如 Oracle、IBM DB2、Microsoft SQL Server、Sybase、ANTS,以及一些開源資料庫,如 PostgreSQL、MySQL、Derby、Berkeley DB (Sleepcat) 等。

資料庫表通常在長度和寬度上有限制。例如,SQL Server 2005 的行寬限制為 8K,並且許多長度受 32 位定址限制,最多大約為 4E9 條記錄。在 64 位定址下,此限制增加到大約 1.8E19 條記錄。

Microsoft .NET 框架附帶了幾個名稱空間來管理資料庫中的資料。.NET 還附帶了 SQL Server 和 Oracle 的本機提供程式。本機提供程式僅適用於一個數據庫產品,並使用本機資料庫更有效率。雖然存在幾個通用資料庫類,但如果您正在使用具有本機提供程式的資料庫,則應使用它。

在 ASP.NET 中執行資料庫操作相當容易。下面是一個快速示例,說明如何連線到資料庫。

連線到資料庫

[編輯 | 編輯原始碼]

VB.NET

Class Page1
    Public Sub Page_Load (byval sender as System.Object, byval eventars as System.EventArgs)
        Dim sqlconn as new SQLConnection("database connection string")
        sqlconn.Open()
    End Sub

End Class

C#.NET

public class Page1

{
    public void Page_Load(object sender, EventArgs e)
    {
        string strConn = "''database connection string''"; 
        // the italicized ''database connection string'' above should   
        // be replaced by some real valid one.
        SqlConnection sqlConn = new SqlConnection(strConn);
        sqlConn.Open();
    }
}

關於 C# 示例的註釋

  • 由於 Page_Load 事件處理程式(即處理此事件的“void”方法)是在類宣告(名為“Page1”)中宣告的,這意味著通常在這種情況下它是在一個單獨的“程式碼隱藏”檔案中,如果頁面的 ASP.NET 檔名為“Page1.aspx”,則其程式碼隱藏檔案通常名為“Page1.aspx.cs”。如果它是在與頁面原始碼相同的檔案中宣告的(即,在 <script runat="server"> ... </script> 標記內),則不需要進行頁面類宣告。
  • 如果您正在使用程式碼隱藏編碼模型,則需要在 @Page 指令中包含適當的屬性(有關詳細資訊,請檢視 SDK 文件)。
  • 在程式碼隱藏檔案中,類應該在“名稱空間”宣告中宣告(通常以應用程式的名稱命名 - namespace DataAccess{ ... },例如)。
  • 建議在名稱空間宣告之上新增 using 宣告,以用於 .NET 框架的整合名稱空間,這樣您就可以使用簡短的名稱來引用 .NET 類,例如,不是 System.Data.SqlClient.SqlConnection。
  • Page1 類通常應顯式繼承自 System.Web.UI.Page。因此,我們的 Page1 原始碼檔案可能如下所示:
using System;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace DataAccess

{
    public class Page1 : System.Web.UI.Page
    {
        public void Page_Load(object sender, EventArgs e)
        {
            ...
        }
    }
}
  • 本例中 Page_Load 事件處理程式的訪問修飾符為“public”。通常使用“protected”甚至“private”訪問修飾符(出於封裝原因)。然而,在本例中,程式設計師可能希望在 Page1 類之外訪問 sqlConn 變數,因此使用“public”...

另請參閱:SQLConnection 引數

class DBConnection
{
  public void Page_Load (System.Object sender, System.EventArgs eventars)
  {
    try
     {
        SqlConnection sqlconnection = new SqlConnection("database connection string");
        sqlconnection.Open();
      }
       catch(Exception ex)
      {
        MessageBox.show(ex.message);
       }
  }
}

ADO.NET 連線字串示例 (受信任連線)

[編輯 | 編輯原始碼]
server=DBSERVER;database=DBName;Trusted_Connection=True;

連線池

[編輯 | 編輯原始碼]

在經典的 ASP 中,資料庫連線管理得不是很好。然而隨著 ASP.NET 的出現,資料庫連線池變得相當透明。如果提供相同的連線字串,連線池會自動處理。

華夏公益教科書