日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用 SqlDataSource 插入、更新和删除数据49

發(fā)布時(shí)間:2023/12/1 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 SqlDataSource 插入、更新和删除数据49 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)介

正如在?數(shù)據(jù)插入、更新和刪除概述?中討論的那樣,GridView 控件提供內(nèi)置的更新和刪除功能,而DetailsView 和 FormView 控件則包含對(duì)插入、編輯和刪除功能的支持。這些數(shù)據(jù)修改功能無需編寫任何代碼,可直接嵌入數(shù)據(jù)源控件。?數(shù)據(jù)插入、更新和刪除概述?中探討了如何使用 ObjectDataSource 通過 GridView 、DetailsView 和 FormView 控件完成插入、更新和刪除功能。或者,可使用SqlDataSource 代替 ObjectDataSource 。

回想一下,要使 ObjectDataSource 支持插入、更新和刪除功能,我們需要指定完成插入、更新和刪除操作調(diào)用的目標(biāo)層方法。使用SqlDataSource ,我們需要提供要執(zhí)行的 INSERT 、UPDATE 、 和DELETE SQL 語句(或存儲(chǔ)過程)。正如我們將在本教程中所看到的,這些語句可手動(dòng)創(chuàng)建,也可以由 SqlDataSource 的 Configure Data Source 向?qū)ё詣?dòng)生成。

注意:由于我們已經(jīng)討論了 GridView 、DetailsView 和 FormView 控件的插入、編輯和刪除功能,本教程將更多的關(guān)注配置 SqlDataSource 控件來支持這些操作。如果您需要溫習(xí)在GridView 、DetailsView 和 FormView 內(nèi)的這些功能,請(qǐng)返回編輯、插入和刪除數(shù)據(jù)教程,首先從?數(shù)據(jù)插入、更新和刪除概述?開始。

步驟1 :指定 INSERT 、UPDATE 和 DELETE 語句

正如我們?cè)谇懊鎯蓚€(gè)教程中所看到的,要想從SqlDataSource 控件檢索數(shù)據(jù),我們需要設(shè)置兩個(gè)屬性 :

  • ConnectionString ,用于指定向哪個(gè)數(shù)據(jù)庫(kù)發(fā)送查詢。
  • SelectCommand ,用于指定返回結(jié)果需要執(zhí)行的 ad-hoc SQL 語句或者存儲(chǔ)過程名稱。
  • 對(duì)于帶參數(shù)的SelectCommand 值來說,參數(shù)值可通過SqlDataSource 的 SelectParameters 集合指定,可包含固定賦值、公用參數(shù)源值(查詢字符串字段、會(huì)話變量、Web 控件值等),或者通過編碼分配。調(diào)用 SqlDataSource 控件的 Select() 方法時(shí)(既可以通過編碼調(diào)用,也可以從 Web 數(shù)據(jù)控件自動(dòng)調(diào)用),將建立連接到數(shù)據(jù)庫(kù)的連接,將參數(shù)值分配給查詢,并且將命令轉(zhuǎn)到數(shù)據(jù)庫(kù)。根據(jù)控件的DataSourceMode 屬性值,結(jié)果隨后可能作為 DataSet 返回,也可能作為 DataReader 返回。

    SqlDataSource 控件不僅可以選擇數(shù)據(jù),還可以采用完全相同的方式,通過支持INSERT 、UPDATE 和 DELETE SQL 語句用于插入、更新和刪除數(shù)據(jù)。只需分配要執(zhí)行的INSERT 、UPDATE 和 DELETE SQL 語句的?InsertCommand?、?UpdateCommand?和DeleteCommand?屬性。如果語句帶有參數(shù)(它們中大大多數(shù)均帶有參數(shù)),請(qǐng)將它們包含到?InsertParameters?、UpdateParameters?和?DeleteParameters?集合中。

    一旦指定了InsertCommand 、UpdateCommand 或DeleteCommand 值,相應(yīng)的 Web 數(shù)據(jù) 控件的智能標(biāo)記中的 “Enable Inserting” 、“Enable Editing” 或者 “Enable Deleting” 將變?yōu)榭捎眠x項(xiàng)。為了說明這一點(diǎn),我們需要從 Querying.aspx 頁(yè)面中舉一個(gè)在?使用 SqlDataSource 控件查詢數(shù)據(jù)?教程中創(chuàng)建的例子,并將其擴(kuò)充為包含刪除能力。

    首先,從SqlDataSource 文件夾中打開 InsertUpdateDelete.aspx 頁(yè)面和Querying.aspx 頁(yè)面。在 Querying.aspx 頁(yè)面的設(shè)計(jì)器上,從 第一個(gè)示例中選擇 SqlDataSource 和 GridView(ProductsDataSource 和 GridView1 控件)。選擇兩個(gè)控件之后,轉(zhuǎn)到 Edit 菜單,并選擇 Copy (或者按下 Ctrl+C )。接下來,轉(zhuǎn)到InsertUpdateDelete.aspx 頁(yè)面上的設(shè)計(jì)器,并粘貼到控件中。在將兩個(gè)控件移動(dòng)到InsertUpdateDelete.aspx 之后,請(qǐng)?jiān)跒g覽器中測(cè)試頁(yè)面。將在 Products 數(shù)據(jù)庫(kù)表中看到所有記錄的 ProductID 、 ProductName 和 UnitPrice 值。

    圖1 :按 ProductID 的順序列出所有產(chǎn)品

    添加 SqlDataSource 的DeleteCommand 和DeleteParameters 屬性

    此時(shí),我們已經(jīng)獲得了從Products表返回所有記錄的SqlDataSource ,以及顯示此數(shù)據(jù)的 GridView 。我們的目標(biāo)是將此示例擴(kuò)展為用戶可以通過 GridView 刪除產(chǎn)品。要完成此目標(biāo),我們需要指定SqlDataSource 控件的 DeleteCommand 和DeleteParameters 屬性值,然后將GridView 配置為支持刪除。

    DeleteCommand 和 DeleteParameters 屬性可通過多種方式指定:

    • 通過聲明式語法指定
    • 從設(shè)計(jì)器中的 Properties 窗口指定
    • 從Configure Data Source 向?qū)У摹癝pecify a custom SQL statement or stored procedure" 屏幕指定
    • 從Configure Data Source 向?qū)У摹癝pecify columns from a table of view” 屏幕中的Advanced 按鈕來指定,實(shí)際上,它將自動(dòng)生成DeleteCommand 和 DeleteParameters 屬性中使用的 DELETE SQL 語句和參數(shù)集

    下面,我們將探討如何在步驟2 中自動(dòng)創(chuàng)建 DELETE 語句。現(xiàn)在,盡管 Configure Data Source 向?qū)Щ蛘呗暶魇秸Z法選項(xiàng)均可工作,但我們將在設(shè)計(jì)器中使用 Properties 窗口。

    在InsertUpdateDelete.aspx 頁(yè)面中的設(shè)計(jì)器中,單擊 ProductsDataSource SqlDataSource ,隨后屏幕上將顯示 Properties 窗口(從 View 菜單選擇Properties 窗口,或者單擊F4 )。選擇 DeleteQuery 屬性,屏幕上將顯示省略號(hào)。

    圖2 :從 Properties 窗口選擇 DeleteQuery 屬性

    注意:SqlDataSource 沒有 DeleteQuery 屬性。并且,DeleteQuery 是 DeleteCommand 和 DeleteParameters 屬性的組合,僅在使用 設(shè)計(jì)器 查看窗口Properties 窗口時(shí)才被列出。如果您的 Source 視圖中查看 Properties 窗口,您會(huì)看到 DeleteCommand 屬性。

    DeleteQuery 屬性中單擊省略號(hào),屏幕將顯示Command and Parameter Editor 對(duì)話框(見圖 3)。在此對(duì)話框中,您可以指定DELETE SQL 語句和參數(shù)。在DELETE 命令文本框中輸入下列查詢(既可以手動(dòng)輸入,也可以使用Query Builder 輸入,如果您愿意的話)。

    DELETE FROM Products WHERE ProductID = @ProductID

    接下來,單擊 Refresh Parameters 按鈕,向下面的參數(shù)列表中添加 @ProductID 參數(shù)。

    圖3 :從 Properties 窗口選擇 DeleteQuery 屬性

    請(qǐng)不要為此參數(shù)賦值(保留其參數(shù)源為 “None” )。一旦我們給 GridView 提供了刪除支持,GridView 將自動(dòng)支持此參數(shù)值,單擊 Delete 按鈕的行將使用其 DataKeys 集合的值。

    注意:DELETE 查詢中使用的參數(shù)名稱必須與 GridView 、DetailsView 或者FormView 中的 DataKeyNames 值的名稱一致。也就是說,DELETE 語句中的參數(shù)是特意命名為 @ProductID (而不是 @ID),因?yàn)?Products 表中關(guān)鍵字列名稱(所以,GridView 中的 DataKeyNames 值)為 ProductID 。

    如果參數(shù)名稱和 DataKeyNames 值不匹配,GridView 將無法從 DataKeys 連接自動(dòng)分配參數(shù)值。

    在 Command and Parameter Editor 對(duì)話框中輸入刪除相關(guān)的信息之后,單擊OK ,轉(zhuǎn)到Source 視圖,查看結(jié)果的聲明標(biāo)記:

    <asp:SqlDataSource?ID="ProductsDataSource"?runat="server"?
    ????ConnectionString="<%$?ConnectionStrings:NORTHWNDConnectionString?%>"?
    ????SelectCommand=?
    ????????"SELECT?[ProductID],?[ProductName],?[UnitPrice]?FROM?[Products]"?
    ????DeleteCommand="DELETE?FROM?Products?WHERE?ProductID?=?@ProductID">?
    ????<DeleteParameters>?
    ????????<asp:Parameter?Name="ProductID"?/>?
    ????</DeleteParameters>?
    </asp:SqlDataSource>

    請(qǐng)注意添加DeleteCommand 屬性、<DeleteParameters> 部分和名為productID 的參數(shù)對(duì)象。

    配置 GridView 啟用刪除

    添加DeleteCommand 屬性之后,GridView 的智能標(biāo)記將包含 “Enable Deleting” 選項(xiàng)。繼續(xù)執(zhí)行,并選中此復(fù)選框。正如在插入、更新和刪除概述?中討論的一樣,這將使GridView 添加一個(gè)CommandField ,其 ShowDeleteButton 屬性被設(shè)置為 True 。如圖 4 所示,當(dāng)頁(yè)面通過瀏覽器訪問時(shí),頁(yè)面上將包含一個(gè) Delete 按鈕。可以通過刪除某些產(chǎn)品來測(cè)試此頁(yè)面。

    圖4 :每個(gè)GridView 行均包含一個(gè)Delete 按鈕

    單擊Delete 按鈕時(shí)出現(xiàn)回傳,GridView 為每個(gè)單擊 Delete 按鈕行的 ProductID 參數(shù)賦值為 DataKeys 集的值,并調(diào)用 SqlDataSource 的 Delete() 方法。然后,SqlDataSource 控件將連接到數(shù)據(jù)庫(kù),并執(zhí)行DELETE 語句。這樣,GridView 將重新綁定到 SqlDataSource ,恢復(fù)并顯示當(dāng)前產(chǎn)品(這些產(chǎn)品現(xiàn)在不再包含剛剛刪除的記錄)。

    注意:由于 GridView 使用其 DataKeys 集合為SqlDataSource 參數(shù)賦值,因此 GridView 的 DataKeyNames 屬性可設(shè)置為組成主鍵的列并且 SqlDataSource 的 SelectCommand 返回這些列就變得至關(guān)重要。此外,SqlDataSource 的 DeleteCommand 中的參數(shù)名設(shè)置為 @ProductID 也十分重要。如果未設(shè)置 DataKeyNames 屬性,或者參數(shù)未命名為 @ProductsID ,單擊 Delete 按鈕將導(dǎo)致回傳,但實(shí)際上不會(huì)刪除任何記錄。

    圖5 以圖形方式說明了此過程。有關(guān)在 Web 數(shù)據(jù)控件中與插入、更新和刪除相關(guān)的事件鏈的更詳細(xì)討論,請(qǐng)參照?探討與插入、更新、刪除相關(guān)的事件?教程。

    圖5 : 在 GridView 中單擊 Delete 按鈕將調(diào)用 SqlDataSource 的 Delete() 方法

    步驟2 :自動(dòng)生成 INSERT 、UPDATE 和 DELETE 語句

    正如步驟1 中所討論的,INSERT 、UPDATE 和 DELETE SQL 語句可通過Properties 窗口或者控件的聲明式語法指定。但是,此方法要求我們手動(dòng)編寫 SQL 語句,這些語句可能十分單調(diào),并且容易產(chǎn)生錯(cuò)誤。幸運(yùn)的是 ,Configure Data Source 向?qū)峁┝艘粋€(gè)選項(xiàng) , 使用 “ Specify columns from a table of view” 屏幕時(shí)可自動(dòng)生成 INSERT 、UPDATE 和 DELETE 語句。

    下面,我們探討一下這個(gè)自動(dòng)生成選項(xiàng)。在InsertUpdateDelete.aspx 中向 設(shè)計(jì)器 添加一個(gè) DetailsView ,并將其 ID 屬性設(shè)置為 ManageProducts 。接下來,從 DetailsView 的智能標(biāo)記中選擇創(chuàng)建新數(shù)據(jù)源,并創(chuàng)建一個(gè)名為 ManageProductsDataSource 的 SqlDataSource 。

    圖6 :創(chuàng)建一個(gè)名為 ManageProductsDataSource 的新 SqlDataSource

    從Configure Data Source 向?qū)нx擇使用NORTHWINDConnectionString 連接字符串,單擊 Next 。從 “Configure the Select Statement” 屏幕,保留 “Specify columns from a table or view” 單選按鈕選中不變,并從下拉列表選擇 Products 表。從復(fù)選框列表選擇 ProductID 、 ProductName 、 UnitPrice 和 Discontinued 列。

    圖7 :使用 Products 表,返回 ProductID 、ProductName 、UnitPrice 和 Discontinued 列

    要根據(jù)所選的表和列自動(dòng)生成 INSERT 、UPDATE 和 DELETE 語句,單擊Advanced 按鈕,選中 “Generate INSERT, UPDATE, and DELETE statements” 復(fù)選框。

    圖8 :選中 “Generate INSERT, UPDATE, and DELETE statements” 復(fù)選框

    只有在所選的表有主鍵并且主鍵列包含在返回列的列表中時(shí),“Generate INSERT, UPDATE, and DELETE statements” 復(fù)選框才可被選中。在選中 “ Generate INSERT, UPDATE, and DELETE statements” 復(fù)選框的情況下,“ Use optimistic concurrency” 復(fù)選框?qū)⒆鳛榻Y(jié)果產(chǎn)生的 UPDATE 和 DELETE 語句中增加 WHERE 子句,提供開放式并發(fā)控件。現(xiàn)在,不選中此復(fù)選框;我們將在下一篇教程中探討使用 SqlDataSource 控件完成開放式并發(fā)。

    在選中“Generate INSERT, UPDATE, and DELETE statements” 復(fù)選框之后,單擊OK 返回 “Configure Select Statement” 屏幕,然后單擊 Next ,最后單擊 Finish ,完成 Configure Data Source 向?qū)АM瓿上驅(qū)Ш?#xff0c;Visual Studio 將為 ProductID 、ProductName 和 UnitPrice 向 DetailsView 添加BoundFields ,還將為 Discontinued 列添加CheckBoxField 。為了使正在訪問此頁(yè)面的用戶能夠查看產(chǎn)品,請(qǐng)從DetailsView 的智能標(biāo)記選擇 “Enable Paging” 選項(xiàng)。同時(shí),清除DetailsView 的 Width 和 Height 屬性。

    請(qǐng)注意,智能標(biāo)記還提供了 “Enable Inserting” 、“Enable Editing” 和 “Enable Deleting” 選項(xiàng)。這是由于 SqlDataSource 控件包含其 InsertCommand 、UpdateCommand 和 DeleteCommand 值,如下列聲明式語法所示:

    <asp:DetailsView?ID="ManageProducts"?runat="server"?AllowPaging="True"?
    ????AutoGenerateRows="False"?DataKeyNames="ProductID"?
    ????DataSourceID="ManageProductsDataSource"?EnableViewState="False">?
    ????<Fields>?
    ????????<asp:BoundField?DataField="ProductID"?HeaderText="ProductID"?
    ????????????InsertVisible="False"?ReadOnly="True"?SortExpression="ProductID"?/>?
    ????????<asp:BoundField?DataField="ProductName"?HeaderText="ProductName"?
    ????????????SortExpression="ProductName"?/>?
    ????????<asp:BoundField?DataField="UnitPrice"?HeaderText="UnitPrice"?
    ????????????SortExpression="UnitPrice"?/>?
    ????????<asp:CheckBoxField?DataField="Discontinued"?HeaderText="Discontinued"?
    ????????????SortExpression="Discontinued"?/>?
    ????</Fields>?
    </asp:DetailsView>?
    ?
    <asp:SqlDataSource?ID="ManageProductsDataSource"?runat="server"?
    ????ConnectionString="<%$?ConnectionStrings:NORTHWNDConnectionString?%>"?
    ????DeleteCommand=?
    ????????"DELETE?FROM?[Products]?WHERE?[ProductID]?=?@ProductID"?
    ????InsertCommand=?
    ????????"INSERT?INTO?[Products]?([ProductName],?[UnitPrice],?[Discontinued])?
    ?????????VALUES?(@ProductName,?@UnitPrice,?@Discontinued)"?
    ????SelectCommand=?
    ????????"SELECT?[ProductID],?[ProductName],?[UnitPrice],?[Discontinued]?
    ?????????FROM?[Products]"?
    ????UpdateCommand=?
    ????????"UPDATE?[Products]?SET?[ProductName]?=?@ProductName,?
    ?????????[UnitPrice]?=?@UnitPrice,?[Discontinued]?=?@Discontinued?
    ?????????WHERE?[ProductID]?=?@ProductID">?
    ????<DeleteParameters>?
    ????????<asp:Parameter?Name="ProductID"?Type="Int32"?/>?
    ????</DeleteParameters>?
    ????<UpdateParameters>?
    ????????<asp:Parameter?Name="ProductName"?Type="String"?/>?
    ????????<asp:Parameter?Name="UnitPrice"?Type="Decimal"?/>?
    ????????<asp:Parameter?Name="Discontinued"?Type="Boolean"?/>?
    ????????<asp:Parameter?Name="ProductID"?Type="Int32"?/>?
    ????</UpdateParameters>?
    ????<InsertParameters>?
    ????????<asp:Parameter?Name="ProductName"?Type="String"?/>?
    ????????<asp:Parameter?Name="UnitPrice"?Type="Decimal"?/>?
    ????????<asp:Parameter?Name="Discontinued"?Type="Boolean"?/>?
    ????</InsertParameters>?
    </asp:SqlDataSource>

    請(qǐng)注意SqlDataSource 控件如何自動(dòng)設(shè)置其InsertCommand 、UpdateCommand 和? DeleteCommand 屬性值。InsertCommand 和 UpdateCommand 屬性中引用的列是由SELECT 語句中的列決定的。也就是說,InsertCommand 和UpdateCommand 只含有那些SelectCommand 中指定的列,并不是每個(gè)Products 列均在InsertCommand 和UpdateCommand 中(由于它是?編輯時(shí)無法更改它的值,插入時(shí)自動(dòng)分配,將忽略較小的 ProductID )。此外,對(duì)于InsertCommand、UpdateCommand 和DeleteCommand 屬性中的每個(gè)參數(shù)來說,InsertParameters 、UpdateParameters 和 DeleteParameters 集合中有相應(yīng)的參數(shù)。

    要啟用DetailsView 的數(shù)據(jù)修改功能,請(qǐng)?jiān)谄渲悄軜?biāo)記中選中 “Enable Inserting” 、“ Enable Editing” 和 “Enable Deleting” 選項(xiàng)。這將添加一個(gè) CommandField ,其ShowInsertButton 、ShowEditButton 和ShowDeleteButton 屬性均被設(shè)置為 True 。

    在瀏覽器中訪問頁(yè)面,請(qǐng)注意DetailsView 中包含的 Edit 、Delete 和 New 按鈕。單擊 Edit 按鈕,DetailsView 將切換到編輯模式,該模式將所有ReadOnly 屬性被設(shè)置為False(默認(rèn)值)的 BoundField 顯示為一個(gè)文本框,而 CheckBoxField 則顯示為復(fù)選框。

    圖9 :DetailsView 的默認(rèn)編輯界面

    與此類似,您可以刪除當(dāng)前選擇的產(chǎn)品,或者向系統(tǒng)添加一個(gè)新產(chǎn)品。由于 InsertCommand 語句處理 ProductName 、UnitPrice 和 Discontinued 列,其它列在插入時(shí)要么由數(shù)據(jù)庫(kù)分配 NULL 值,要么分配它們的默認(rèn)值。就像 ObjectDataSource 一樣,如果 InsertCommand 丟失了任何不允許使用NULL 值或者沒有默認(rèn)值的數(shù)據(jù)庫(kù)列表行,嘗試執(zhí)行 INSERT 語句時(shí)將出現(xiàn)一個(gè) SQL 錯(cuò)誤。

    注意:DetailsView 的插入和編輯界面缺少某種定制或驗(yàn)證。要添加validation 控件或定制界面,您需要將BoundFields 轉(zhuǎn)換為TemplateFields 。更多信息 , 請(qǐng)參閱?為編輯與插入界面添加驗(yàn)證控件和?自定義數(shù)據(jù)修改界面教程。

    此外,請(qǐng)記住對(duì)于更新和刪除來說,DetailsView 使用當(dāng)前產(chǎn)品的 DataKey 值,此值僅在 DataKeyNames 已經(jīng)配置完畢的情況下呈現(xiàn)。如果編輯和刪除看上去似乎沒有效果,請(qǐng)確定是否設(shè)置了DataKeyName 屬性。

    自動(dòng)生成 SQL 語句的限制

    由于“Generate INSERT, UPDATE, and DELETE statements” 僅在從表中選擇列時(shí)可用,對(duì)于更復(fù)雜的查詢來說,您必須像步驟1 一樣編寫您自己的INSERT 、UPDATE 和 DELETE 語句。通常情況下,為了實(shí)現(xiàn)顯示的目的,SQL SELECT 語句使用 JOIN 從一個(gè)或者更多個(gè)查找表中取回?cái)?shù)據(jù)(例如,在顯示產(chǎn)品信息時(shí)取回 Categories 表的 CategoryName 字段)。同時(shí),我們可能想讓用戶可以編輯、更新或插入數(shù)據(jù)到“核心”表(此時(shí)是 Products 表)。

    由于INSERT 、UPDATE 和 DELETE 語句可手動(dòng)輸入,請(qǐng)考慮下列節(jié)省時(shí)間的技巧。首先,安裝SqlDataSource ,保證它可以從 Products 表撤回?cái)?shù)據(jù)。請(qǐng)使用 Configure Data Source 向?qū)У?“ Specify columns from a table or view” 屏幕,保證可以自動(dòng)生成 INSERT 、UPDATE 和 DELETE 語句,然后,在完成向?qū)е?#xff0c;從Properties 窗口選擇配置SelectQuery (或者,返回 Configure Data Source 向?qū)?#xff0c;但是使用“Specify a custom SQL statement or stored procedure” 選項(xiàng)。)最后,更新 SELECT 語句,使之包含 JOIN 語法。此技術(shù)可以自動(dòng)生成 SQL 語句,可提供更容易定制的 SELECT 語句,從而節(jié)省時(shí)間。

    自動(dòng)生成INSERT 、UPDATE 和 DELETE 語句的另外一個(gè)限制是 INSERT 和 UPDATE 語句中的列是根據(jù) SELECT 語句返回的列確定的。我們可能需要更新或者插入更多或者更少的字段。例如,來自步驟2 的例子中,我們可能將 UnitPrice BoundField 設(shè)置為只讀。在這種情況下,它不應(yīng)該在UpdateCommand 中出現(xiàn)。或者,我們可能希望設(shè)置 GridView 中不出現(xiàn)的表字段。例如,添加新記錄時(shí),我們可能希望將 QuantityPerUnit 設(shè)置為“TODO” 。

    如果需要這樣的定制,您需要手動(dòng)完成,要么通過Properties 窗口、向?qū)е械?“Specify a custom SQL statement or stored procedure” 選項(xiàng)完成,要么通過聲明式語法完成。

    注意:在 Web 數(shù)據(jù)控件中添加不含有相應(yīng)字段的參數(shù)時(shí),請(qǐng)記住這些參數(shù)值在某些方面需要分配值。分配的值可以為:InsertCommand 或 UpdateCommand 中的直接賦值;可從某些預(yù)定義源獲得(查詢字符串 、會(huì)話變量、頁(yè)面上的 Web? 控件等);或者可通過編碼賦值,正如我們?cè)谇懊娴慕坛讨锌吹降囊粯印?/p>

    小結(jié)

    為了使Web 數(shù)據(jù)控件能夠使用它們內(nèi)置的插入、編輯和刪除功能,它們綁定的數(shù)據(jù)源控件必須提供這樣的功能。對(duì)SqlDataSource 來說,這意味著INSERT 、UPDATE 和 DELETE SQL 語句必須分配給 InsertCommand 、UpdateCommand 和 DeleteCommand 屬性。這些屬性及其相應(yīng)的參數(shù)集可以手動(dòng)添加,或者通過Configure Data Source 向?qū)ё詣?dòng)生成。在本教程中,我們對(duì)上述兩種方法均進(jìn)行了討論。

    在?實(shí)現(xiàn)開放式并發(fā)?教程中,我們探討了通過 ObjectDataSource 使用開放式并發(fā)。SqlDataSource 控件也可提供開放式并發(fā)支持。如步驟2 所述,自動(dòng)生成 INSERT 、UPDATE 和 DELETE 語句時(shí),向?qū)⑻峁?“ Use optimistic concurrency” 選項(xiàng)。正如下一篇教程中我們將看到的,通過 SqlDataSource 使用開放式并發(fā)在 UPDATE 和 DELETE 語句中將修改 WHERE 子句,保證頁(yè)面上次顯示數(shù)據(jù)之后其它列的值均未發(fā)生變化。

    快樂編程!

    轉(zhuǎn)載于:https://www.cnblogs.com/uddgm/articles/5451539.html

    總結(jié)

    以上是生活随笔為你收集整理的使用 SqlDataSource 插入、更新和删除数据49的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。