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); } } }
server=DBSERVER;database=DBName;Trusted_Connection=True;
在经典的 ASP 中,数据库连接管理得不是很好。然而随着 ASP.NET 的出现,数据库连接池变得相当透明。如果提供相同的连接字符串,连接池会自动处理。