首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

添加Insert、Update和Delete语句

Adding Insert,Update,and Delete Statements

当前情况下,在所创建的SqlDataSource控件中仅包括一个Select语句,该语句用于从数据库中获取数据:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

    SelectCommand="SELECT * FROM [Customers]"

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

</asp:SqlDataSource>

然而,使用数据源控件向导来创建剩下的Create、Retrieve、Update和Delete(CRUD)语句,会使工作变得更加简单。为了实现这一点,可切换到“Design”视图,单击SqlDataSource控件的智能标签,并选择“Configure Data Source…”,此时,将弹出“Configure Data Source”向导。该向导显示当前的连接字符串,单击“Next”,将显示“Configure Select Statement”对话框,单击“Advanced”按钮。

这时候,将弹出“Advanced SQL Generation Options”对话框。可单击“Generate Insert,Update and Delete statements”(生成Insert、Update和Delete语句)多选框,如图9-10所示。

图9-10:添加CRUD方法

单击这个多选框将使向导创建剩下的CRUD方法,同时,这会启用第二个多选框:Use optimistic concurrency。此处,先不选中它。单击“OK”按钮和“Next”按钮,然后是“Finish”按钮。程序会要求更新GridView。不幸的是,这样会毁掉前面所有的设置,然而,好消息是现在已经将GridView控件绑定到了一个提供所有的四种CRUD方法的数据源控件上。

打开智能标签,设置所需外观,选中“Enable Editing”和“Enable Deleting”项。

如示例9-2所示,列举了所生成的SqlDataSource控件的HTML代码。

示例 9-2:包括CRUD方法的SqlDataSource源代码

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

     SelectCommand="SELECT * FROM [Customers]"

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

     DeleteCommand="DELETE FROM [Customers]

        WHERE [CustomerID] = @original_CustomerID"

     InsertCommand="INSERT INTO [Customers] ([CustomerID], [CompanyName],

               [ContactName], [ContactTitle], [Address], [City], [Region],

               [PostalCode], [Country], [Phone], [Fax])

        VALUES (@CustomerID, @CompanyName, @ContactName, @ContactTitle, @Address,

                @City, @Region, @PostalCode, @Country, @Phone, @Fax)"

     UpdateCommand="UPDATE [Customers] SET [CompanyName] = @CompanyName,

               [ContactName] = @ContactName, [ContactTitle] = @ContactTitle,

               [Address] = @Address, [City] = @City, [Region] = @Region,

               [PostalCode] = @PostalCode, [Country] = @Country,

               [Phone] = @Phone, [Fax] = @Fax

        WHERE [CustomerID] = @original_CustomerID">

    <DeleteParameters>

        <asp:Parameter Type="String" Name="original_CustomerID" />

    </DeleteParameters>

    <UpdateParameters>

        <asp:Parameter Type="String" Name="CompanyName" />

        <asp:Parameter Type="String" Name="ContactName" />

        <asp:Parameter Type="String" Name="ContactTitle" />

        <asp:Parameter Type="String" Name="Address" />

        <asp:Parameter Type="String" Name="City" />

        <asp:Parameter Type="String" Name="Region" />

        <asp:Parameter Type="String" Name="PostalCode" />

        <asp:Parameter Type="String" Name="Country" />

        <asp:Parameter Type="String" Name="Phone" />

        <asp:Parameter Type="String" Name="Fax" />

        <asp:Parameter Type="String" Name="original_CustomerID" />

    </UpdateParameters>

    <InsertParameters>

        <asp:Parameter Type="String" Name="CustomerID" />

        <asp:Parameter Type="String" Name="CompanyName" />

        <asp:Parameter Type="String" Name="ContactName" />

        <asp:Parameter Type="String" Name="ContactTitle" />

        <asp:Parameter Type="String" Name="Address" />

        <asp:Parameter Type="String" Name="City" />

        <asp:Parameter Type="String" Name="Region" />

        <asp:Parameter Type="String" Name="PostalCode" />

        <asp:Parameter Type="String" Name="Country" />

        <asp:Parameter Type="String" Name="Phone" />

        <asp:Parameter Type="String" Name="Fax" />

    </InsertParameters>

</asp:SqlDataSource>

在以上代码中包括了SqlDataSource控件的声明(以及底部的关闭标签)。在ID和必须的runat="server"之后,包括4个属性:SelectCommand(之前已经有了)和新的DeleteCommand、InsertCommand和UpdateCommand。

SelectCommand="SELECT * FROM [Customers]"

DeleteCommand="DELETE FROM [Customers]

WHERE [CustomerID] = @original_CustomerID"

InsertCommand="INSERT INTO [Customers] ([CustomerID], [CompanyName], [ContactName],

[ContactTitle], [Address], [City], [Region], [PostalCode], [Country], [Phone], [Fax])

VALUES (@CustomerID, @CompanyName, @ContactName, @ContactTitle, @Address, @City, @Region,

@PostalCode, @Country, @Phone, @Fax)"

UpdateCommand="UPDATE [Customers] SET [CompanyName] = @CompanyName,

[ContactName] = @ContactName, [ContactTitle] = @ContactTitle, [Address] = @Address,

[City] = @City, [Region] = @Region, [PostalCode] = @PostalCode, [Country] = @Country,

[Phone] = @Phone, [Fax] = @Fax

WHERE [CustomerID] = @original_CustomerID">

DeleteCommand只有一个参数(@original_CustomerID),DeleteParameters具体设置如下:

<DeleteParameters>

    <asp:Parameter Type="String" Name="original_CustomerID" />

</DeleteParameters>

UpdateCommand需要更多参数,一个参数用于指定每个需要更新的列,还有一个参数用于指定原CustomerID(用来确保更新正确的记录)。类似地,InsertCommand也要为新记录的每个列设置参数。所有这些参数都在SqlDataSource中定义。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论