注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

_

_

 
 
 

日志

 
 

asp.net学习之SqlDataSource  

2014-10-11 05:48:49|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

asp.net学习之SqlDataSource

?????? 通过 SqlDataSource 控件,可以使用 Web 服务器控件访问位于关系数据库中的数据。其中可以包括 Microsoft SQL Server 和 Oracle 数据库以及 OLE DB 和 ODBC 数据源。您可以将 SqlDataSource 控件与数据绑定控件(如 GridView、FormView 和 DetailsView 控件)一起使用,用极少代码或甚至不用代码来在 ASP.NET 网页上显示和操作数据。

1. 总述

?? SqlDataSource是基于ADO.net构建的,会使用ADO.NET中的DataSet、DataReader和Command对象,我们看不见它们只不过是被封装起来了。SqlDataSource是一个控件,所以允许以声明控件的方式,而不是编程的方式使用这些ADO.NET对象。
?? SqlDataSource需要与其它数据绑定控件结合起来,以显示数据。关于数据绑定控件,见http://www.cnblogs.com/shipfi/archive/2009/10/15/1584054.html

2.一些常用的属性

?? 这些属性不光可以在程序代码中进行设定,也可以在画面中像使用控件方式一样进行设定。
?? 2.1 ConnectionString属性 : 获取或设置特定于 ADO.NET 提供程序的连接字符串
?????? 如果是控件形式,可以在aspx页面中进行设定,代码如下:

<!-- 连接字符串直接写入ConnectionString属性中 -->
<asp:SqlDataSource ID="srcMovies" runat="server"
?????????? ConnectionString="Data Source=PC-200907130922;Initial Catalog=DawnEnterpriseDB;User ID=sa;Password=****" >
<!-- 连接字符串直接在web.config中 -->
<asp:SqlDataSource ID="srcMovies" runat="server"
?????????? ConnectionString="<%$ ConnectionStrings:DawnEnterpriseDBConnectionString %>" >

?????????? 如果是编程方式,在aspx.cs中,代码如下:

SqlDataSource srcMov = new SqlDataSource();
srcMov.ConnectionString =
???? WebConfigurationManager.ConnectionStrings["DawnEnterpriseDBConnectionString"].ConnectionString;

?? 2.2 ProviderName属性:获取或设置 .NET Framework 数据提供程序的名称,使用该提供程序来连接基础数据源。
??????? 如果不进行设定,默认的为 Microsoft SQL Server 的 ADO.NET 提供程序的名称。
??????? 可以设定的值有:"System.Data.SqlClient"、"System.Data.OleDb"、"System.Data.Odbc"、"System.Data.OracleClient"
??????? MSDN上记载:如果更改 ProviderName 属性,会引发 DataSourceChanged 事件,从而导致所有绑定到 SqlDataSource 的控件重新进行绑定。
?? 2.3 执行四个SQL语句的Command及相应的CommandType
?????? ●SelectCommand、InsertCommand、UpdateCommand、DeleteCommand
?????? 以上四个属性都是String类型,可以提供SQL语句及存储过程名称。
?????? 如果是提供的存储过程,则需要把相应的SelectCommandType,InsertCommandType,UpdateCommandType,DeleteCommandType设定为"StoredProcedure"
?? 2.4 进行过滤的FilterExpression属性
?????? 设定FilterExpression属性,可以过滤控件返回的行,例如:

复制代码

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
???????? ConnectionString="<%$ ConnectionStrings:DawnEnterpriseDBConnectionString %>"
???????? SelectCommand="SELECT [product_id], [product_code], [product_name] FROM [product_main]”
???????? FilterExpression=”Product_name like ‘{0}%’ ”
???????? Runat=”server”>
???????? <FilterParameters>
?????????????? <asp:ControlParameter Name=”Title” ControlID=”txtTitle” />
???????? </FilterParameters>
</asp:SqlDataSource>

复制代码

?? 2.5 改变数据源模型DataSourceMode属性
???????? 可以改变数据源模型有:"DataReader",”DataSet”,默认是DataSet.相比DataSet,DataReader可以更快速,但是,只有DataSet提供了缓存、过滤、分页和排序功能

?? 2.6 ASP.NET参数对象属性
???????? 通常,SQL 语句和存储过程包括运行时计算的参数。使用参数编写的 SQL 语句称作参数化 SQL 语句
???????? ASP.NET 数据源控件可以接受输入参数,这样就可以在运行时将值传递给这些参数。
???????? 参数值可以从多种源中获取。通过 Parameter 对象,可以从 Web 服务器控件属性、Cookie、会话状态、QueryString 字段、用户配置文件属性及其他源中为参数化数据操作提供值。
???????? 相应的参数对象包括:
????????? ● Parameter:表示任意一个静态值
????????? ● ControlParameter:表示控件值或页面的属性值
????????? ● CookieParameter:表示浏览器的Cookie值
????????? ● FormParameter:表示一个HTML表单字段的值
????????? ● ProfileParameter:表示一个配置文件属性值
????????? ● QueryStringParameter:表示一个查询字符串字段中的值
????????? ● SessionParameter:表示一个存储在会话状态中的值
???????? 以上参数对象也具有相关属性,包括ConvertEmptyStringToNull、DefaultValue、Direction、Name、Size、Type。参数对象可以显式的声明,对于GridView、DetailsView数据绑定控件,无需显式的声明参数,原因是因为以下这句话的说明:

如果 GridView 控件等数据绑定控件绑定到 SqlDataSource 控件,在执行更新或删除操作期间,该数据绑定控件会同时将当前记录值和原始记录值传递到 SqlDataSource 控件。当前值传递到 Values 字典中。原始值传递到 Keys 或 OldValues 字典中。对于给定的数据操作,这些字典的内容将会追加到基础 DbCommand 对象的 Parameters 集合中。

???????? 更具体的详见以下MSDN说明:
????????? ●对 SqlDataSource 控件使用参数:ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_vwdcon/html/403ff44a-dd0b-484d-968e-dcd1dcd4c295.htm
????????? ●对数据源控件使用参数: ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_vwdcon/html/88622d04-2989-484e-93fe-594cd98dcf5f.htm
????????? ●数据源控件如何为数据绑定字段创建参数:ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_vwdcon/html/aa3f28c5-fd99-4978-8a66-c7709e0816c4.htm

?? 2.7 缓存属性EnableCaching与CacheDuration
EnableCaching属性表示是否需要缓冲,CacheDuration表示缓存的失效时间。更多的缓存说明,会另外进行讲述。
????????? 以下是MSDN中对于缓存的说明:

复制代码

??? 当 EnableCaching 属性设置为 true 且 CacheDuration 属性设置为一个大于 0 的值(该值指示在放弃缓存项之前,缓存存储数据的秒数)时,SqlDataSource 控件将自动缓存数据。值 0 表示无限期缓存。
??? 缓存的行为取决于持续时间和 CacheExpirationPolicy 属性的组合。如果 CacheExpirationPolicy 属性设置为 Absolute 值,则 SqlDataSource 将缓存第一次数据检索操作的数据,并将其保留在内存中一段时间,这段时间最长为 CacheDuration 属性所指定的时间量。如果需要内存,可以在持续时间结束前释放数据。然后,缓存在下一操作期间被刷新。如果 CacheExpirationPolicy 属性设置为 Sliding 值,数据源控件将缓存第一次数据检索操作的数据,但是对于后面的每个操作,它都重置保留缓存的时间窗口。自上次 Select 操作以后,如果在等于 CacheDuration 值的时间段内没有任何活动,缓存将过期。
?? 仅当 SqlDataSource 控件处于 DataSet 模式时,它才可缓存数据。如果 SqlDataSource 控件设置为 DataReader 值并且启用了缓存,则 Select 方法将引发 NotSupportedException 异常。

复制代码

????????? 更多的MSDN说明,请参见:ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_system.web/html/5bfd5e37-43e6-8dca-4323-8454d465bd0b.htm

3. 详叙sqlDataSource中的ASP.NET参数对象

??? 本段落是对2.6节探讨的ASP.NET参数对象的扩充说明,在2.6节说过,参数对象有Parameter、ControlParameter、CookieParameter…
??? 这些asp.net参数对象有以下共通属性:
???? ● ConvertEmptyStringToNull : 当值为真时,如果参数接受一个空字符,空字符被转换为NULL
???? ● DefaultValue : 参数默认值
???? ● Direction : 参数方向,可以为INPUT、OUTPUT、InputOutput、ReturnValue
???? ● Name : 参数名称
???? ● Size : 参数数据大小
???? ● Type : 参数类型,可以为TypeCode枚举值
3.1 ControlParameter对象
???????? ControlParmeter对象可以表示一个控件的属性值。可以表示任意一个与SqlDataSource控件位于同一页面的控件的值
???????? 除了具备父类Parameter所有的属性外,还具备以下属性:
?????????? ● ControlID : 控件ID
?????????? ● PropertyName : 获取或设置由ControlParameter 对象绑定到的ControlID 属性标识的控件的属性名

?? 对于PropertyName, 这里说明一下,假设需要从一个DropdownList1控件获得参数,关于DropdownList会有两个值,一是SelectedText,一是 SelectValue.那是想要取参数时取DropdownList1.SelectedText值呢,还是 DropdownList1.SelectValue值?PropertyName就是设置控件的相应属性值,从控件的哪个属性里取参数。对于 DropdownList控件,它的属性还比较少。如果对于GridView控件,它的属性就很多啦,包括PageIndex,Rows等等都可以作为参数来提取。Understand?
?? 另外,对于PropertyName值并不必须要设定,如果不设定,控件参数对象会自动查找ControlVlaueProperty属性装饰的属性。 DropdownList控件的这个属性就是SelectedValue。关于这点,请参考:
?? ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_system.web/html/f8be313f-8426-a7e7-904a-5a70cc816410.htm

例1:设置ControlParameter参数

复制代码

<!--从DropdownList控件中提取参数-->
<asp:DropDownList id=”ddlMovies”
DataSourceID=”srcMovies” DataTextField=”Title” DataValueField=”Id” Runat=”server” />
<asp:SqlDataSource id=”srcMovieDetails”
SelectCommand=”SELECT * FROM Movies WHERE Id=@Id”
ConnectionString=”<%$ ConnectionStrings:Movies %>” Runat=”server”>
<SelectParameters>
<asp:ControlParameter Name=”Id” ControlID=”ddlMovies” PropertyName=”SelectedValue” />
</SelectParameters>
</asp:SqlDataSource>

复制代码

??? 还有一种方法,就是参数想取得cs代码类中相应变量作为参数的值,是否可以?其实,作为cs中的类,是继承自System.Web.UI.Page的对象,而Page类又是自Control类继承,所以可以使用ControlParameter对象来表示Page属性的值
例2:从Page对象属性中取得相应ControlParameter对象

复制代码

<script runat=”server”>
public string IPAddress
{
???? get { return Request.UserHostAddress; }
}
</script>
<asp:SqlDataSource id=”srcGuestBook”
SelectCommand=”SELECT * FROM GuestBook ORDER BY Id DESC”
??? InsertCommand=”INSERT GuestBook (IPAddress,Name,Comments)
??? VALUES (@IPAddress,@Name,? ConnectionString=”<%$ ConnectionStrings:GuestBook %>”
??? Runat=”server”>
<InsertParameters>
<asp:ControlParameter Name=”IPAddress” ControlID=”__page”?? PropertyName=”IPAddress” />
</InsertParameters>
</asp:SqlDataSource>

复制代码

??????? 以上,表示本页Page的控件对象ID是__page,这个值是Page类自动生的的ID。PropertyName的值为IPAddress,是在后台代码中定义的一个属性。
例3:动态在代码中加入ControlParmeter对象

复制代码

1private void Page_Load(object sender, System.EventArgs e)
2asp.net学习之SqlDataSource - redtea - _asp.net学习之SqlDataSource - redtea - _{
3??????? SqlDataSource sqlSource = new SqlDataSource(
4????????? ConfigurationManager.ConnectionStrings["MyNorthwind"].ConnectionString,
5 "SELECT FirstName, LastName FROM Employees WHERE Country = @country;");
6
7??????? ControlParameter country = new ControlParameter();
8??????? country.Name = "country";
9??????? country.Type = TypeCode.String;
10??????? country.ControlID = "DropDownList1";
11??????? country.PropertyName = "SelectedValue";
12
13 // If the DefaultValue is not set, the DataGrid does not
14 // display anything on the first page load. This is because
15 // on the first page load, the DropDownList has no
16 // selected item, and the ControlParameter evaluates to
17 // String.Empty.
18??????? country.DefaultValue = "USA";
19
20??????? sqlSource.SelectParameters.Add(country);
21
22 // Add the SqlDataSource to the page controls collection.
23??????? Page.Controls.Add(sqlSource);
24
25??????? DataGrid1.DataSource = sqlSource;
26??????? DataGrid1.DataBind();
27}

复制代码

3.2 CookieParameter对象?
CookieParameter对象表示浏览器端的Cookie,除了具备父类Parameter的所有属性外,还具备以下属性:
?????????? ● CookieName : 浏览器cookie的名称
例4:如何使用CookieParameter

复制代码

<script runat=”server”>
void Page_Load()
{
if (Request.Cookies[“VoterId”] == null) {
// 创建VoterId Cookie对象
????????? string identifier = Guid.NewGuid().ToString();
????????? HttpCookie voteCookie = new HttpCookie(“VoterId”, identifier);
????????? voteCookie.Expires = DateTime.MaxValue;
????????? Response.AppendCookie(voteCookie);
???? }
}
</script>
<asp:FormView id=”frmVote” DataSourceID=”srcVote” DefaultMode=”Insert” Runat=”server”>
<InsertItemTemplate>
<asp:Label? id=”lblFavoriteColor”? AssociatedControlID=”rdlFavoriteColor” Runat=”server” />
<asp:RadioButtonList id=”rdlFavoriteColor” SelectedValue=’<%#Bind(“Color”)%>' Runat=”server”>
<asp:ListItem Value=”Red” Text=”Red” Selected=”True” />
<asp:ListItem Value=”Blue” Text=”Blue” />
<asp:ListItem Value=”Green” Text=”Green” />
</asp:RadioButtonList>
<asp:Button id=”btnSubmit” Text=”Submit” CommandName=”Insert” Runat=”server” />
</InsertItemTemplate>
</asp:FormView>
<asp:SqlDataSource id=”srcVote”
SelectCommand=”SELECT * FROM Vote ORDER BY Id DESC”
??? InsertCommand=”INSERT Vote (VoterId,Color) VALUES (@VoterId,@Color)”?
???????? <!--Color参数从FormView中得到,VoterId参数从Cookie中得到-->
??? ConnectionString=”<%$ ConnectionStrings:Vote %>”? Runat=”server”>
<InsertParameters>
<asp:CookieParameter Name=”VoterId”? CookieName=”VoterId” />
</InsertParameters>
</asp:SqlDataSource>

复制代码

3.3 FormParameter对象??
???? FormParameter对象表示一个提效给WEB服务器的表单字段,通常,在asp.net中不用像asp中需要直接处理浏览器中的表单,因为表单处理功能已经封装在表单控件中了。
例5:如何使用FormParameter

复制代码

<script runat=”server”>
void Page_Load()
{
// 如果是点击了AddMove按钮
if (Request.Form[“AddMovie”] != null)
??????? srcMovies.Insert();? // 触发sqlDatasource的Insert事件
}
</script>
<body>
<form action=”ShowFormParameter.aspx” method=”post”> <!-- 需要提交的表单 -->
<label for=”txtTitle”>Movie Title:</label>
<input name=”txtTitle” />
<br />
<label for=”txtDirector”>Movie Director:</label>
<input name=”txtDirector” />
<br />
<input name=”AddMovie” type=”submit” value=”Add Movie” />
</form>
<form id=”form1” runat=”server”> <!--服务器Form控件 -->
<asp:GridView id=”grdMovies” DataSourceID=”srcMovies” Runat=”server” /> <!--GirdView控件,显示数据 -->
<asp:SqlDataSource id=”srcMovies” SelectCommand=”SELECT * FROM Movies”
??????????? InsertCommand=”INSERT Movies (Title,Director,CategoryId,DateReleased)? VALUES (@Title,@Director,0,’12/25/1966’)”
?????????? ConnectionString=”<%$ ConnectionStrings:Movies %>”? Runat=”server”>
<InsertParameters>
<asp:FormParameter Name=”Title” FormField=”txtTitle” DefaultValue=”Untitled” />
<asp:FormParameter Name=”Director”? FormField=”txtDirector” DefaultValue=”Allen Smithee” />
</InsertParameters>
</asp:SqlDataSource>
</form>
</body>

复制代码

3.4 ProfileParameter对象???
?????? ProfileParameter对象可以用来提取web.config中的Profile属性,ProfileParameter除包含Parameter基类的所有属性外,还具备以下属性:
????????? ● ProfileName: Profile属性的名称
例6:如何使用ProfileParameter对象

复制代码

<!-- web.config配置 -->
<system.web>
<profile enabled=”true”>
<properties>
<add name=”DisplayName” defaultValue=”Anonymous” />
</properties>
</profile>
</system.web>

复制代码

复制代码

<!-- aspx处理页面 ?>
<!-- 留言版的输入框 -->
<asp:FormView id=”frmGuestBook” DataSourceID=”srcGuestBook” DefaultMode=”Insert” Runat=”server”>
<InsertItemTemplate>
<asp:Label id=”lblComments” Text=”Enter Your Comments:” Runat=”server” /> <br />
<asp:TextBox id=”txtComments” Text=’<%# Bind(“Comments”) %>' TextMode=”MultiLine” Columns=”50”
?????????????? Rows=”4” Runat=”server” /> <br />
<asp:Button id=”btnInsert” Text=”Add Comments” CommandName=”Insert” Runat=”server” />
</InsertItemTemplate>
</asp:FormView>
<!-- SqlDataSource处理 -->
<asp:SqlDataSource id=”srcGuestBook”
SelectCommand=”SELECT Name,Comments,EntryDate FROM GuestBook ORDER BY Id DESC”
?????? InsertCommand=”INSERT GuestBook (Name,Comments) VALUES (@Name,@Comments)”
?????? ConnectionString=”<%$ ConnectionStrings:GuestBook %>”? Runat=”server”>
<InsertParameters>
<asp:ProfileParameter Name=”Name” PropertyName=”DisplayName” />
</InsertParameters>
</asp:SqlDataSource>

复制代码

3.5 QueryStringParameter对象???
?????? QueryStringParameter对象可以表示传递给页面的任何查询字符串,QueryStringParameter除包含Parameter基类的所有属性外,还具备以下属性:
????????? ● QueryStringField: 所表示查询字符串的名称
例7:如何使用QueryStringField对象

复制代码

<!-- 链接页面 -->
<asp:GridView id=”grdMovies” DataSourceId=”srcMovies” AutoGenerateColumns=”false”
ShowHeader=”false”? Runat=”server”>
<Columns>
<asp:HyperLinkField DataTextField=”Title” DataNavigateUrlFields=”Id”
DataNavigateUrlFormatString=”ShowQueryStringParameterDetails.aspx?id={0}” />
</Columns>
</asp:GridView>
<asp:SqlDataSource id=”srcMovies” SelectCommand=”SELECT * FROM Movies”
???????? ConnectionString=”<%$ ConnectionStrings:Movies %>” Runat=”server” />

复制代码

复制代码

<!-- 链接后的处理页面 -->
<asp:SqlDataSource id=”srcMovie”
SelectCommand=”SELECT * FROM Movies WHERE Id=@Id”
ConnectionString=”<%$ ConnectionStrings:Movies %>”? Runat=”server”>
<SelectParameters>
<asp:QueryStringParameter Name=”Id” QueryStringField=”Id” />
</SelectParameters>
</asp:SqlDataSource>

复制代码

3.6 SessionParameter对象???
?????? SessionParameter对象表示存储在Session状态中的项目,SessionParameter除包含Parameter基类的所有属性外,还具备以下属性:
????????? ● SessionField: 所表示会话状态中的项目名称
例8:如何使用SessionParameter对象

复制代码

<script runat=”server”>
void Page_Load()
{
??? Session[“MovieCategoryName”] = “Animation”;
}
</script>
<asp:SqlDataSource id=”srcMovies”
SelectCommand=”SELECT Name As Category,Title,Director FROM Movies
????????????????????????????????? INNER JOIN MovieCategories ON CategoryId = MovieCategories.id
WHERE Name=@Name”
ConnectionString=”<%$ ConnectionStrings:Movies %>”?? Runat=”server”>
<SelectParameters>
<asp:SessionParameter Name=”Name” SessionField=”MovieCategoryName” />
</SelectParameters>
</asp:SqlDataSource>

复制代码

4. 通过程序控制SqlDataSource对象

?? SqlDataSource控件一般都与数据绑定控件一起使用,在本节中,可以知道、
?????? ● 如何通过在代码中直接使用SqlDataSource控件的属性和方法来创建参数、
?????? ● 如何执行选择、插入、更新和删除命令
4.1 添加ADO.NET参数
??????? SqlDataSource并没有直接与数据交互,它是通过ADO.NET对象与数据库交互的。当和SqlDataSource控件一起使用时,所有声明的ASP.NET参数也应转换成相应的ADO.NET参数
??????? 在某些情况下,希望直接处理ADO.NET参数,可以通过在执行相应的命令前通过程序增加额外的ADO.NET参数
例9:通过程序增加SqlDataSource的SelectCommand参数

复制代码

<script runat=”server”>
protected void srcGuestBook_Inserting(object sender, SqlDataSourceCommandEventArgs e)
{
// SqlDataSourceCommandEventArgs 为 SqlDataSource 控件的 Updating、Deleting 和 Inserting 事件提供数据。
// MSDN上这样解释SqlDataSourceCommandEventArgs参数:
/* 因为 SqlDataSourceCommandEventArgs 类是从 CancelEventArgs 类派生的,所以可以通过将 Cancel 属性设置为 true,
?????? 取消挂起的 SqlDataSource 数据库命令。通过访问由 Command 属性公开的 DbCommand 对象,可以在运行此命令之前,
?????? 检查和操作 CommandText、Parameters 集合以及其他命令属性。*/
??? e.Command.Parameters.Add(new SqlParameter(“@Name”, User.Identity.Name));?? // 为Insert操作添加一个参数
}
</script>
<!-- aspx处理页面 ?>
<!-- 留言版的输入框 -->
<asp:FormView id=”frmGuestBook” DataSourceID=”srcGuestBook” DefaultMode=”Insert” Runat=”server”>
<InsertItemTemplate>
<asp:Label id=”lblComments” Text=”Enter Your Comments:” Runat=”server” /> <br />
<asp:TextBox id=”txtComments” Text=’<%# Bind(“Comments”) %>' TextMode=”MultiLine” Columns=”50”
?????????????? Rows=”4” Runat=”server” /> <br />
<asp:Button id=”btnInsert” Text=”Add Comments” CommandName=”Insert” Runat=”server” />
</InsertItemTemplate>
</asp:FormView>
<!-- SqlDataSource处理 -->
<asp:SqlDataSource id=”srcGuestBook”
SelectCommand=”SELECT Name,Comments,EntryDate FROM GuestBook ORDER BY Id DESC”
?????? InsertCommand=”INSERT GuestBook (Name,Comments) VALUES (@Name,@Comments)”
?????? ConnectionString=”<%$ ConnectionStrings:GuestBook %>”? Runat=”server”? OnInserting=”srcGuestBook_Inserting”>
<!-- 与例6不同的是,这里无需添加相应的参数对象,参数对象通过srcGuestBook_Inserting事件进行追加 -->
</asp:SqlDataSource>

复制代码

??????? 另外,需要说明的是,Inserting、Updating、Deleting操作传递给函数的都是SqlDataSourceCommandEventArgs参数,但Filtering传递给函数的却是SqlDataSourceFilteringEventArgs对象,使用以下方法取得已和设定的参数:

复制代码

protected void SqlDataSource1_Filtering(object sender, SqlDataSourceFilteringEventArgs e)
{
if (e.ParameterValues.Count > 0)
???? {
????????? Label1.Text = e.ParameterValues[0].ToString();
???? }
if (Textbox1.Text == "")
{??? // 添加参数:第一个为参数名,第二个为参数Value。
?????????? e.ParameterValues.Clear();
?????????? e.ParameterValues.Add("FullName", "Nancy Davolio");
???? }
}

复制代码

4.2 执行Insert、Update、Delete命令
???????? 其实,执行相应的命令,只要调用SqlDataSource对象的Insert()、Update()、Delete()方法就可以了。
例10:通过程序,执行SqlDataSource Insert命令

复制代码

<script runat=”server”>
protected void btnAddEntry_Click(object sender, EventArgs e)
{
??? srcGuestBook.InsertParameters[“Name”].DefaultValue = txtName.Text;
??? srcGuestBook.InsertParameters[“Comments”].DefaultValue = txtComments.Text;
??? srcGuestBook.Insert();
}
</script>
<asp:TextBox id=”txtName” Runat=”server” /> <!-- 输入值1 -->
<asp:TextBox id=”txtComments” TextMode=”MultiLine”
Columns=”50” Rows=”2” Runat=”server” /> <!-- 输入值2 -->
<asp:Button id=”btnAddEntry” Text=”Add Entry”? Runat=”server” OnClick=”btnAddEntry_Click” />
<asp:SqlDataSource id=”srcGuestBook” ConnectionString=”<%$ ConnectionStrings:GuestBook %>”
???????? SelectCommand=”SELECT Name,Comments FROM GuestBook ORDER BY Id DESC”
???????? InsertCommand=”INSERT GuestBook (Name,Comments) VALUES (@Name,@Comments)”
???????? Runat=”server”>
<InsertParameters>
<asp:Parameter Name=”Name” />
<asp:Parameter Name=”Comments” />
</InsertParameters>
</asp:SqlDataSource>

复制代码

?? 4.3 执行Select命令
???????? 执行Select命令与其它命令不同,因为Select需要返回数据。SqlDataSource的Select方法返回一个实现IEnumerable的接口,DataView和DataReader都实现了这个接口,可以创建一个DataView或DataReader对象接受该数据。
??????? 具体的例子暂时搁置,等写到了再贴上来。

  评论这张
 
阅读(360)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017