首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 資料教程 49:SqlDataSource 插入、更新、刪除完整教學

     編輯:關於ASP.NET

SqlDataSource 同樣支援 GridView/DetailsView/FormView 的零程式碼資料修改。本教程詳細說明設定步驟與參數對應。

第一步:指定 Insert/Update/Delete 陳述式

可手寫或透過「設定資料來源精靈」→「進階」→「自動產生命令」產生。

手寫範例

<asp:SqlDataSource ID="ProductsDS" runat="server"
    ConnectionString="%$ ConnectionStrings:Northwind %$"
    SelectCommand="SELECT ProductID, ProductName, UnitPrice FROM Products"
    InsertCommand="INSERT INTO Products (ProductName, UnitPrice) VALUES (@ProductName, @UnitPrice)"
    UpdateCommand="UPDATE Products SET ProductName=@ProductName, UnitPrice=@UnitPrice WHERE ProductID=@ProductID"
    DeleteCommand="DELETE FROM Products WHERE ProductID=@ProductID">
    <InsertParameters>
        <asp:Parameter Name="ProductName" Type="String" />
        <asp:Parameter Name="UnitPrice" Type="Decimal" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="ProductName" Type="String" />
        <asp:Parameter Name="UnitPrice" Type="Decimal" />
        <asp:Parameter Name="ProductID" Type="Int32" />
    </UpdateParameters>
    <DeleteParameters>
        <asp:Parameter Name="ProductID" Type="Int32" />
    </DeleteParameters>
</asp:SqlDataSource>

第二步:啟用資料控制項智慧標籤功能

設定好命令後,GridView 智慧標籤會出現「啟用編輯」、「啟用刪除」;DetailsView/FormView 另增「啟用插入」。

參數自動繫結規則

  • DataKeyNames 指定的主鍵欄位會自動帶入 Update/Delete 參數 (前綴 original_ 可用於開放式並發)。
  • 編輯模式下輸入控制項的 ID 或 Bind("欄位名") 對應 Insert/Update 參數。

進階:使用預存程序

InsertCommand="sp_InsertProduct"
InsertCommandType="StoredProcedure"
<InsertParameters>
    <asp:Parameter Name="@ProductName" />
    <asp:Parameter Name="@UnitPrice" />
    <asp:Parameter Name="@NewID" Direction="Output" Type="Int32" />
</InsertParameters>

完整範例頁面結構

<asp:GridView ID="GridView1" DataSourceID="ProductsDS"
    DataKeyNames="ProductID" AutoGenerateColumns="False"
    AllowPaging="True" AllowSorting="True">
    <Columns>
        <asp:BoundField DataField="ProductID" ReadOnly="True" HeaderText="ID" />
        <asp:BoundField DataField="ProductName" HeaderText="名稱" />
        <asp:BoundField DataField="UnitPrice" HeaderText="價格" DataFormatString="{0:C}" />
        <asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />
    </Columns>
</asp:GridView>

<asp:DetailsView ID="DetailsView1" DataSourceID="ProductsDS"
    DataKeyNames="ProductID" AutoGenerateRows="False"
    DefaultMode="Insert">
    <Fields>
        <asp:BoundField DataField="ProductName" HeaderText="名稱" />
        <asp:BoundField DataField="UnitPrice" HeaderText="價格" />
        <asp:CommandField ShowInsertButton="True" />
    </Fields>
</asp:DetailsView>

常見問題排查

  • 更新不生效:確認 DataKeyNames 正確、參數名稱與命令一致、資料型別相符。
  • 刪除失敗:檢查外鍵限制、觸發器、權限。
  • 插入後需取得自增 ID:使用 Output 參數或 `SCOPE_IDENTITY()` 搭配 `OnInserted` 事件。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved