一、 简介
在2005年11月7 日,微软正式发行了.NET 2.0(包括ASP.NET 2.0),Visual Studio 2005和SQL Server 2005。所有这些部件均被设计为可并肩独立工作。也就是说,ASP.NET版本1.x和版本2.0可以安装在同一台机器上;你可以既有Visual Studio.NET 2002/2003和Visual Studio 2005,同时又有SQL Server 2000和SQL Server 2005。而且,微软还在发行Visual Studio 2005和SQL Server 2005的一个 Express式的SKU。注意,该Express版并不拥有专业版所有的特征。
2.0除了支持1.x风格的数据存取外,自身也包括一些新的数据源控件-它们使得访问和修改数据库数据极为轻松。使用这些数据源控件时,你只需简单地添加该控件到ASP.NET页面并通过这些控件的属性来配置连接串和SQL查询即可。然后,通过把数据Web控件的DataSourceID属性设置为数据源控件的ID,该数据源控件就能被绑定到一个数据 Web控件(如GridView)上。现今,必须靠编写代码来创建连接,创建命令,指定SQL查询,检索一个DataReader或DataSet,并且把它绑定到数据Web控件的日子已经过去了。这些步骤能够通过使用声明性数据源控件来代替。(当然,你还能通过使用你的1.x代码中的熟悉的步骤编程地存取数据。)
在本文中我们将看一下怎样连接和显示来自ASP.NET数据库程序。具体地说,我们将讨论怎样使用编程和声明性方法来存取数据,以及分析通过GridView控件来显示数据的基本操作。
二、 在Visual Studio 2005中操作数据库
当你安装Visual Studio 2005的任何版本时,你总是被询问是否你也想安装SQL Server 2005 Express版本。如果你选择Yes,这将安装你的开发包中的SQL Server 2005 Express版本-注意,在此你正在安装Visual Studio 2005!(SQL Server 2005 Express版本可以与SQL Server的其它版本一起安装,包括SQL Server 2000和SQL Server 2005的其它版本。)
如果你在当前工程中使用SQL Server 2000,那么你可以通过企业管理器来以最舒适的方式操作数据库。尽管你仍能使用企业管理器来操作SQL Server 2000,或使用SQL Server 2005的管理Studio来操作你的SQL Server 2005数据库;但是,你也能通过Visual Studio 2005的数据连接来管理这些数据库。我提及这些是因为对于SQL Server 2005 Express版本来说,不存在一个象SQL Server 2000的企业管理器或SQL Server 2005的管理 Studio这样的GUI工具;代之的是,你必须通过Visual Studio 2005来创建和管理你的SQL Server 2005 Express版本数据库。
提示 管理SQL Server 2005 Express版本数据库
如果你有任何其它除 Express以外的SQL Server 2005版本,你可以在你的机器上安装客户端工具,它包括管理Studio-管理SQL Server 2005数据库的GUI工具。如果你安装了这个工具,你还可以使用它来管理SQL Server 2005 Express版本数据库。
![]() 图1 |
![]() 图2 |
如果你想跟随本文的步骤,那么请在App_Data文件夹下创建一个称为Customers.mdf的SQL Server 2005 Express数据库。然后,添加一个数据表到这个称为Customers的数据库-用下面字段列:CustomerID(一个自动增加的主键字段), Name,City,State和ZipCode。然后,通过VS 2005添加一些记录到这个数据表。
另外,你还能添加现有 Access数据库文件甚至SQL Server 2000数据库文件。(注意:为了添加一现有SQL Server 2000 .mdf文件,你将需要确定它是第一次从企业管理器上分离;为此,在企业管理器上右击数据库名字,再选择"All Tasks"并且选择"Detach数据库"。一旦你分离开该数据库并且把它添加到ASP.NET数据库程序,你就可以通过企业管理器重新依附它。)
四、 把SqlDataSource控件连接到数据库
现在,既然我们看到了怎么创建并且通过Visual Studio的接口来使用数据库;下面,让我们把注意力转到从一个ASP.NET 2.0 web页面访问和显示来自一数据库的数据上。ASP.NET 2.0包括了几个新的数据源控件-它们的唯一目的是提供到数据的声明性存取。共有五个内置的数据源控件-它们都能够在Visual Studio中的工具箱的"数据"部分找到(请见下边的屏幕快照)。
![]() 图3 |
- <asp:SqlDataSource ID="SqlDataSource1" runat="server"
- ConnectionString="<%$ ConnectionStrings:CustomersConnectionString %>"
- SelectCommand="SELECT * FROM [Customers]">
- </asp:SqlDataSource>
有几点要注意:首先,ConnectionString属性使用了新的句法<%$ ... %>。这个句法从Web.config文件中检索ConnectionStrings节的值的CustomersConnectionString值。换句话说,它从Customers数据库中获取连接串-该串是我们在Sql数据源控件的向导的子步骤中保存下来的;其次,SELECT查询语句是在控件的 SelectCommand属性中指定的。
这些数据源控件其自身只与数据一起工作。他们不显示数据。如果你通过你的浏览器访问这个 ASP.NET页面,你将发现没有产生输出。为了观察由我们刚才创建的Sql数据源控件所返回的数据,我们需要添加一个数据Web控件。对于本文来说,让我们使用GridView控件-你也可以在工具箱的"数据"节中找到它。该GridView是ASP.NET 1.x的DataGrid控件的"老大哥"-它提供了一些新的特性。在本文中,我们只分析到GridView的简单的数据绑定。
现在,我们把一个GridView控件拖动到你的ASP.NET页面上。从设计视图中,该GridView的灵敏标签包括一个"Choose Data Source"选项并且有一个下拉列表的所有的数据源控件在该页面上。把这个下拉列表设置为SqlDataSource1-即是我们刚添加的Sql数据源控件的ID。一旦做完这些,该GridView将自动地有一个BoundFields添加到它上面-对于由数据源所返回的每一列(该GridView的 BoundField等价于DataGrid中的BoundColumn)。通过GridView的灵敏标签来设置"Choose Data Source"下拉列表就可以把GridView的DataSourceID属性设置为所选择数据源控件的ID。
就这么多,不需要写一句代码!下面是通过一浏览器观看该GridView时的一个屏幕快照。
![]() 图4 |
五、 编程连接到一数据库
如我们前面所见,使用一个SqlDataSource检索信息非常快捷,但是如果你想要编程地存取数据又会怎样呢?或者,也许你已经有了现成的代码-该代码将取得你想要的精确数据并且据需要进行管理;并且一旦完成,即修改你将要在一个GridView中所显示的数据。没有问题,你可以就象在1.x中一样地在2.0中存取数据-通过创建一个到数据库的连接,创建一个命令,指定查询,填充一个DataReader或DataSet,然后使用该控件的DataSource 属性和DataBind()方法把结果绑定到数据Web控件。
下列代码显示出一个ASP.NET页面的Page_Load事件处理器-它编程地把Customers数据库数据表的内容绑定到GridView控件gvCustomers上:
- Protected Sub Page_Load(ByVal sender As Object, _
- ByVal e As System.EventArgs) Handles Me.Load
- If Not Page.IsPostBack Then
- 'Start by determining the connection string value
- Dim connString As String = ConfigurationManager.
ConnectionStrings(connStringName).ConnectionString- '创建一个SqlConnection实例
- Using myConnection As New SqlConnection(connString)
- '指定SQL查询
- Const sql As String = "SELECT * FROM Customers"
- '创建一个SqlCommand实例
- Dim myCommand As New SqlCommand(sql, myConnection)
- '取回一个DataSet
- Dim myDataSet As New DataSet
- '创建一个SqlDataAdapter查询
- Dim myAdapter As New SqlDataAdapter(myCommand)
- myAdapter.Fill(myDataSet)
- '把DataSet绑定到GridView
- gvCustomers.DataSource = myDataSet
- gvCustomers.DataBind()
- '关闭连接
- myConnection.Close()
- End Using
- End If
- End Sub
在此,要注意几点:为了取得连接串,我们可以参考Web.config中的连接串设置-使用句法为
ConfigurationManager.ConnectionStrings (connStringName).ConnectionString。其中,connStringName的值应该是在Sql数据源控件向导 (CustomersConnectionString)的子步骤中指定的值。另外注意,Visual Basic 8(2.0中使用的VB版本)现在支持Using关键字-这是在前面的版本中仅适于C#的一个语言特点。
编程地存取数据和输出结果等同于使用Sql数据源控件的情况。
六、 结论
在本文中,我们分析了在Visual Studio 2005中使用ASP.NET数据库程序的情形。我们讨论了怎样通过Visual Studio管理数据库,以及怎样通过App_Data文件夹来添加网站特定的数据库。最后,我们分析了怎样使用Sql数据源控件和编程的方式来存取数据。当使用一个数据源控件时,通过设置GridView的DataSourceID属性来把数据绑到一个GridView控件上;当编程地访问该数据时,通过把数据赋值给GridView的DataSource属性和调用GridView的DataBind()方法来实现把数据绑定到GridView。 (后一种方法遵循在ASP.NET 1.x中使用的模式来绑定数据到一个DataGrid。)不管使用哪一种方式来访问数据,最终的结果,如在一用户浏览器中所见的,皆是相同的。
【编辑推荐】