`
isiqi
  • 浏览: 16043387 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ASP.NET -使用 SqlDataSource 控件选择数据

阅读更多

使用 SqlDataSource 控件只需很少的代码或无需任何代码即可从数据库中检索数据。SqlDataSource 控件可用于任何具有关联 ADO.NET 提供程序(在配置文件的 DbProviderFactories 节中配置)的数据库,包括 Microsoft SQL ServerOracleODBC OLE DB 数据库(如 Microsoft Access)。您在配置时指定 SqlDataSource 使用的 SQL 语句语法以及是否可以使用更高级的数据库功能(如存储过程)均由所用的数据库决定。但是,数据源控件对于所有数据库的操作都是相同的。

若要使用 SqlDataSource 控件从数据库中检索数据,至少需要设置以下属性:

·ProviderName 设置为 ADO.NET 提供程序的名称,该提供程序表示您正在使用的数据库。如果您正在使用 Microsoft SQL Server,请将 ProviderName 属性设置为“System.Data.SqlClient”;如果您正在使用 Oracle 数据库,请将 ProviderName 属性设置为“System.Data.OracleClient”;依此类推。

·ConnectionString 设置为用于数据库的连接字符串。

·SelectCommand 设置为从数据库中返回数据的 SQL 查询或存储过程。为 SelectCommand 属性设置的查询与在编写 ADO.NET 数据访问代码时为 ADO.NET IDbCommand 对象的 CommandText 属性设置的查询相同。SQL 查询的实际语法取决于您的数据架构和您所使用的数据库。

一、指定提供程序名称

ProviderName 属性设置为 ADO.NET 提供程序的名称,该提供程序与存储数据的数据库的类型关联。允许的提供程序的列表在配置文件(Machine.config Web.config 文件)的 DbProviderFactories 节中注册。默认情况下,SqlDataSource 控件使用对应于 Microsoft SQL Server System.Data.SqlClient ADO.NET 提供程序。因此,如果要连接到 SQL Server 数据库,则无需显式指定提供程序。但是,您还可以指定 System.Data.OracleClientSystem.Data.Odbc System.Data.OleDb 提供程序。

说明: 不要将 ProviderName 属性设置为非托管 ADO 提供程序的值,如 SQLOLEDB MSDAORA

二、指定连接字符串

可将 ConnectionString 属性设置为用于特定数据库的连接字符串。不过,将 SqlDataSource 控件的 ConnectionString 属性设置为特定连接字符串,对于大型站点来说并不能算是一种易于维护的策略。另外,连接字符串以明文形式存储在 ASP.NET 页中。若要使 Web 应用程序更易于维护并且安全性更高,建议将连接字符串存储在应用程序配置文件的 connectionStrings 元素中。然后可以用与下面示例中的连接表达式类似的连接表达式来引用存储的连接字符串:

<asp:SqlDataSource

ID="SqlDataSource1"

runat="server"

ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"

SelectCommand="SELECT * FROM [Categories]">

</asp:SqlDataSource>

若要获得更高的安全性,可对 <connectionStrings> 配置节的内容进行加密。

三、指定选择命令

可通过设置 SqlDataSource 控件的 SelectCommand 属性指定该控件要执行的 SQL 查询。下面的示例演示一个 SQL 查询,它检索包含 Employees 表中所有员工的姓的结果集:

SELECT LastName FROM Employees;

下面的代码示例演示如何设置 SqlDataSource 控件的 ConnectionString SelectCommand 属性,以便在 GridView 控件中显示 Employees 数据:

<%@ Page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html >

<head runat="server">

<title>ASP.NET Example</title>

</head>

<body>

<form id="form1" runat="server">

<asp:SqlDataSource

id="SqlDataSource1"

runat="server"

DataSourceMode="DataReader"

ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"

SelectCommand="SELECT LastName FROM Employees">

</asp:SqlDataSource>

<asp:ListBox

id="ListBox1"

runat="server"

DataTextField="LastName"

DataSourceID="SqlDataSource1">

</asp:ListBox>

</form>

</body>

</html>

如果使用的数据库支持存储过程,则可以将 SelectCommand 属性设置为存储过程的名称,并将 SelectCommandType 属性设置为 StoredProcedure,以指示 SelectCommand 属性引用一个存储过程。下面的示例演示一个可在 SQL Server 中创建的简单存储过程:

CREATE PROCEDURE sp_GetAllEmployees AS

SELECT * FROM Employees;

GO

若要配置 SqlDataSource 以使用此存储过程,请将 SelectCommand 文本设置为“sp_GetAllEmployees”,并将 SelectCommandType 属性设置为 StoredProcedure

大多数存储过程都使用参数。

在运行时,SqlDataSource 控件将 SelectCommand 属性中的文本提交给数据库,数据库将查询或存储过程的结果返回给 SqlDataSource 控件。绑定到数据源控件的所有 Web 控件都将在 ASP.NET 页上显示结果集。

四、将参数传递给 SQL 语句

用户通常通过仅在运行时解析或计算的参数与数据进行交互。例如,ASP.NET 网页上显示的数据可能表示特定日期的报表。如果用户选择不同的日期,则报表中的数据也可能会发生更改。无论是由用户显式更改日期还是由 Web 应用程序以编程方式更改日期,如果提交到数据库的 SQL 查询是参数化的 SQL 查询(在这种查询中,SQL 语句的元素绑定到 Web 应用程序变量并在运行时进行计算),则该 SQL 查询会更为灵活且更易于维护。

通过将添加到 SelectParameters 集合的参数与 SelectCommand 查询中的占位符关联起来,SqlDataSource 控件支持参数化 SQL 查询。参数值可从页面上的其他控件、会话状态、用户配置文件以及其他元素中读取。

占位符所用语法不尽相同,具体取决于数据库类型。如果使用 SQL Server,则参数名以“@”字符开头,并且其名称与 SelectParameters 集合中的 Parameter 对象的名称相对应。如果使用 ODBC OLE DB 数据库,则不对参数化语句中的参数命名,而是使用占位符“?”指定。

下面的示例演示参数化 SQL 查询如何根据当前登录员工的员工 ID SQL Server Northwind 数据库中检索所有订单。

SELECT * FROM Orders WHERE EmployeeID = @empid

在此示例中,@empid 表达式是在运行时计算的参数。

下面的代码示例演示一个参数化 SQL 查询,该查询从页面上的其他控件获取参数值:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html >

<head runat="server">

<title>ASP.NET Example</title>

</head>

<body>

<form id="form1" runat="server">

<p><asp:dropdownlist

id="DropDownList1"

runat="server"

autopostback="True">

<asp:listitem selected="True">Sales Representative</asp:listitem>

<asp:listitem>Sales Manager</asp:listitem>

<asp:listitem>Vice President, Sales</asp:listitem>

</asp:dropdownlist></p>

<asp:sqldatasource

id="SqlDataSource1"

runat="server"

connectionstring="<%$ ConnectionStrings:MyNorthwind%>"

selectcommand="SELECT LastName FROM Employees WHERE Title = @Title">

<selectparameters>

<asp:controlparameter name="Title" controlid="DropDownList1" propertyname="SelectedValue"/>

</selectparameters>

</asp:sqldatasource>

<p><asp:listbox

id="ListBox1"

runat="server"

datasourceid="SqlDataSource1"

datatextfield="LastName">

</asp:listbox></p>

</form>

</body>

</html>

五、指定数据的返回方式

SqlDataSource 控件的 DataSourceMode 属性确定 SqlDataSource 控件如何维护数据。默认情况下,DataSourceMode 属性设置为 DataSet,表示通过 SqlDataSource 控件将从数据库返回的结果集存储到服务器内存中。当 SqlDataSource 控件在 DataSet 模式下检索数据时,关联的数据绑定控件(如 GridView DetailsView)可提供丰富的数据显示功能,如自动排序和分页。

另外,还可以将 DataSourceMode 属性设置为 DataReader,表示不将结果集存储在内存中。如果不需要将结果集保存在服务器的内存中,请使用 DataReader 模式。

下面的代码示例演示在不需要排序、分页或筛选时,如何将 SqlDataSource 控件的 DataSourceMode 属性设置为 DataReader

<%@ Page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html >

<head runat="server">

<title>ASP.NET Example</title>

</head>

<body>

<form id="form1" runat="server">

<asp:SqlDataSource

id="SqlDataSource1"

runat="server"

DataSourceMode="DataReader"

ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"

SelectCommand="SELECT LastName FROM Employees">

</asp:SqlDataSource>

<asp:ListBox

id="ListBox1"

runat="server"

DataTextField="LastName"

DataSourceID="SqlDataSource1">

</asp:ListBox>

</form>

</body>

</html>

六、使用 SqlDataSource 控件事件添加自定义处理

S qlDataSource 控件公开那些您可以为了在控件执行数据检索操作前后运行自己的代码而处理的事件。

在调用 Select 方法执行 SelectCommand 属性中设置的 SQL 查询之前,SqlDataSource 控件会引发 Selecting 事件。您可以相应地处理 Selecting 事件,以便在运行 SQL 查询之前先检查 SQL 查询,验证 SelectParameters 集合中包含的参数,或在检索数据之前执行任何其他操作。例如,如果与 SqlDataSource 控件一起附带使用 FormParameter,则可以处理用于在检索数据之前对参数值进行验证的 Selecting 事件。(FormParameter 获取在 HTML 元素中公布的值,并且不进行任何验证直接将其提交到数据库。) 如果该值不可接受,则可以通过将 SqlDataSourceSelectingEventArgs 对象的 Cancel 属性设置为 true 来取消该查询。

在完成了数据检索之后,SqlDataSource 控件引发 Selected 事件。可以处理 Selected 事件,以确定在数据库操作期间是否引发异常,或对数据操作返回的任何值进行检查。

七、显示数据

若要在 ASP.NET 页上显示数据,请使用数据绑定控件(如 GridViewDetailsView FormView 控件)或者使用 ListBox DropDownList 等控件。数据绑定控件使用由 SqlDataSource 控件检索的数据。将数据绑定控件的 DataSourceID 属性设置为 SqlDataSource 控件的 ID。当呈现页面时,SqlDataSource 控件将检索数据并将数据提供给数据绑定控件,数据绑定控件显示该数据。

下面的代码示例演示如何使用 GridView 控件显示查询结果。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html >

<head runat="server">

<title>ASP.NET Example</title>

</head>

<body>

<form id="form1" runat="server">

<asp:SqlDataSource

id="SqlDataSource1"

runat="server"

DataSourceMode="DataReader"

ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"

SelectCommand="SELECT FirstName, LastName, Title FROM Employees">

</asp:SqlDataSource>

<asp:GridView

id="GridView1"

runat="server"

DataSourceID="SqlDataSource1">

</asp:GridView>

</form>

</body>

</html>

分享到:
评论

相关推荐

    在ASP.NET 2.0中操作数据:使用SqlDataSource控件查询数据(源码)

    在ASP.NET 2.0中操作数据:使用SqlDataSource控件查询数据(源码)

    在ASP.NET 2.0中操作数据:使用SqlDataSource控件查询数据

    在ASP.NET 2.0中操作数据:使用SqlDataSource控件查询数据

    《零基础学ASP.NET 2.0》第14章 数据源控件访问数据库

    14.1.1 使用SqlDataSource 数据源控件 246 14.1.2 参数声明 248 14.1.3 缓存数据 250 14.2 访问Access数据库 251 14.2.1 连接到Access数据文件 251 14.2.2 更新Access数据库 253 14.3 显示和转换XML数据 254 14.3.1 ...

    asp.net常用Web服务器控件

    4.1 使用控件显示文本 实例 显示密码格式文本 实例 显示长日期格式时间 实例 显示金额格式文本 4.2 使用控件显示图片 实例 显示验证码图片 实例 动态显示用户头像 实例 使用网页对话框显示图片 实例 实现上传图片 ...

    ASP.NET 控件的使用

    9.3 在SqlDataSource控件中使用ASP.NET参数 271 9.3.1 使用ASP.NET参数对象 272 9.3.2 使用ASP.NET的Control-Parameter对象 274 9.3.3 使用ASP.NET的Cookie-Parameter对象 277 9.3.4 使用ASP.NET的Form-Parameter...

    ASP.NET.4揭秘

    9.3 在sqldatasource控件中使用asp.net参数308 9.3.1 使用asp.net参数对象308 9.3.2 使用asp.net的controlparameter对象311 9.3.3 使用asp.net的cookieparameter对象315 9.3.4 使用asp.net的formparameter对象317 ...

    在ASP.NET 2.0中操作数据之四十六:使用SqlDataSource控件检索数据

    在前面的教程里,我们用ObjectDataSource控件充分的将表现层和数据访问层(DAL)分开来。在这篇教程里我们看看怎样在一个表现层和数据访问层区分的不是很严格的简单程序中使用SqlDataSource控件。

    asp.net知识库

    用于弹出ModalDialog进行数据选择的控件 使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的...

    asp.net2.0数据教程

    导言 创建一个数据访问层 创建一个业务逻辑层 ...47 使用SqlDataSource 控件查询数据(Reeezak) 48 在SqlDataSource中使用参数化查询(Reeezak) 49 使用SqlDataSource插入、更新以及删除数据(Reeezak

    ASP.NET2.0数据教程

    导言 创建一个数据访问层 创建一个业务逻辑层 ...47 使用SqlDataSource 控件查询数据(Reeezak) 48 在SqlDataSource中使用参数化查询(Reeezak) 49 使用SqlDataSource插入、更新以及删除数据(Reeezak

    asp.net2.0

    导言 创建一个数据访问层 创建一个业务逻辑层 ...47 使用SqlDataSource 控件查询数据(Reeezak) 48 在SqlDataSource中使用参数化查询(Reeezak) 49 使用SqlDataSource插入、更新以及删除数据(Reeezak

    ASP.NET 3.5 开发大全11-15

    11.4.3 ASP.NET登录控件的使用 11.5 自定义控件实例 11.5.1 ASP.NET分页控件 11.5.2 ASP.NET分页控件的使用 11.6 小结 第12章 ASP.NET的皮肤、主题和母版页 12.1 皮肤和主题 12.1.1 CSS简介 12.1.2 CSS基础 12.1.3 ...

    ASP.NET三层架构

    走过Asp.net学习入门阶段后,真正开始着手开发一个Web项目时,才发现错综复杂的数据与关联根本就不是SqlDataSource和AccessDataSource数据源控件能简单解决的,而恰恰是被忽视了的一个ObjectDataSource数据源控件才...

    ASP.NET 3.5 开发大全1-5

    11.4.3 ASP.NET登录控件的使用 11.5 自定义控件实例 11.5.1 ASP.NET分页控件 11.5.2 ASP.NET分页控件的使用 11.6 小结 第12章 ASP.NET的皮肤、主题和母版页 12.1 皮肤和主题 12.1.1 CSS简介 12.1.2 CSS基础 12.1.3 ...

    asp.net教学讲义

    Asp.net教学讲义 1 讲义内容 6 第一章:asp.net和web窗体 6 1.1 NET应用开发架构简介 6 1.1.1. NET框架结构 6 1.1.2 http协议简介 6 1.1.3 静态网页与动态网页 8 1.1.4 客户端代码与服务器端代码 8 1.1.5 ASP.NET...

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    示例描述:本章演示ASP.NET 2.0网站的预编译以及学习ASP.NET 2.0的前置知识。 WebSite文件夹 创建的ASP.NET 2.0 Web站点。 www文件夹 第一个用C#开发的Web应用程序。 bianyi.bat 编译网站的批处理文件。 ...

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    第3章 ASP.NET 2.0常用服务器控件 3.1 使用基本控件 3.1.1 TextBox控件的应用 3.1.2 Label控件的应用 3.1.3 DropDownList和ListBox控件应用 3.1.4 CheckBOX和CheckBoxList控件应用 3.1.5 RadioButton和...

    ASP.NET教学讲义,完整章节

    第一章:asp.net和web窗体 4 1.1 NET应用开发架构简介 4 1.2 Web 窗体与ASP.NET页面 7 1.3 ASP.NET 页的结构 11 1.4 Page事件(页面事件) 16 1.2.2 处理回送 20 1.2.3 ASP.NET应用程序示例 23 第二章:WEB服务器...

    ASP.NET3.5控件详解

    VS2008中实际项目中用到的各种控件,包括ASP.NET3.5的大部分控件的使用方法和技巧,各种控件属性以及各种控件方法应用大全。 包括各种基本控件,各种验证控件,各种列表控件,SqlDataSource控件,ObjectDataSource...

Global site tag (gtag.js) - Google Analytics