跳转到内容

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 的出现,数据库连接池变得相当透明。如果提供相同的连接字符串,连接池会自动处理。

华夏公益教科书