www.baike369.com
百科369 > ASP.NET教程 > ASP.NET添加ADO.NET参数

ASP.NET添加ADO.NET参数


ASP.NET添加ADO.NET参数

实际上,SqlDataSource控件并没有直接和数据库交互,它是通过ADO.NET对象和数据库交互的。例如DataSet、DataReader、Parameter和Command等对象。所以,当和SqlDataSource控件一起使用时,声明的所有ASP.NET参数也相应地被转换成ADO.NET参数。

有些情况下,在使用SqlDataSource控件时希望直接处理ADO.NET参数对象。例如,在执行命令前通过程序增加额外的ADO.NET参数。


实例

在AddParameter.aspx网页中,自动向SqlDataSource控件执行的命令中添加表示当前用户的用户名的ADO.NET参数。程序代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddParameter.aspx.cs" Inherits="AddParameter" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    protected void srcGuestBook_Inserting(object sender, SqlDataSourceCommandEventArgs e)
    {
        e.Command.Parameters.Add(new SqlParameter("@Name", User.Identity.Name));
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>ASP.NET添加ADO.NET参数-www.baike369.com</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    <asp:FormView
        id="frmGuestBook"
        DataSourceID="srcGuestBook"
        DefaultMode="Insert"
        Runat="server">
        <InsertItemTemplate>
        <asp:Label
            id="lblComments"
            Text="输入您的留言:"
            Runat="server">
        </asp:Label>
        <br />
        <asp:TextBox
            id="txtComments"
            Text='<%# Bind("Comments") %>'
            TextMode="MultiLine"
            Columns="50"
            Rows="4"
            Runat="server">
        </asp:TextBox>
        <br />
        <asp:Button
            id="btnInsert"
            Text="保存留言"
            CommandName="Insert"
            Runat="server" />
        </InsertItemTemplate>
    </asp:FormView>

    <hr />

    <asp:GridView
        id="grdGuestBook"
        DataSourceID="srcGuestBook"
        Runat="server">
    </asp:GridView>
    <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">
    </asp:SqlDataSource>

    </div>
    </form>
</body>
</html>

执行结果如下:

ASP.NET添加ADO.NET参数的操作效果

srcGuestBook_Inserting()事件处理程序将会在SqlDataSource控件执行插入命令前立即执行。在该事件处理程序中,新的ADO.NET参数被添加到了这个插入命令,它表示当前用户的用户名。


提示

ADO.NET参数的名称和ASP.NET参数的名称不同,ADO.NET参数的名称总是以字符@开头的。

Copyright© 2011-2016 www.baike369.com All Rights Reserved