SqlDataSource를 사용하여 데이터 삽입, 업데이트 및 삭제(VB)

작성자 : Scott Mitchell

PDF 다운로드

이전 자습서에서는 ObjectDataSource 컨트롤이 데이터 삽입, 업데이트 및 삭제를 허용하는 방법을 알아보았습니다. SqlDataSource 컨트롤은 동일한 작업을 지원하지만 접근 방식은 다르며 이 자습서에서는 데이터를 삽입, 업데이트 및 삭제하도록 SqlDataSource를 구성하는 방법을 보여 줍니다.

소개

삽입, 업데이트 및 삭제 개요에서 설명한 대로 GridView 컨트롤은 기본 제공 업데이트 및 삭제 기능을 제공하며 DetailsView 및 FormView 컨트롤에는 기능 편집 및 삭제와 함께 지원 삽입이 포함됩니다. 이러한 데이터 수정 기능은 코드 줄을 작성할 필요 없이 데이터 소스 제어에 직접 연결할 수 있습니다. GridView, DetailsView 및 FormView 컨트롤을 사용하여 삽입, 업데이트 및 삭제를 용이하게 하기 위해 ObjectDataSource를 사용하여 검사한 삽입, 업데이트 및 삭제 개요입니다. 또는 ObjectDataSource 대신 SqlDataSource를 사용할 수 있습니다.

ObjectDataSource를 사용하여 삽입, 업데이트 및 삭제를 지원하기 위해 삽입, 업데이트 또는 삭제 작업을 수행하기 위해 호출할 개체 계층 메서드를 지정해야 했습니다. SqlDataSource를 사용하여 실행할 , UPDATEDELETE SQL 문(또는 저장 프로시저)을 제공해야 INSERT합니다. 이 자습서에서 볼 수 있듯이 이러한 문을 수동으로 만들거나 SqlDataSource의 데이터 원본 구성 마법사에서 자동으로 생성할 수 있습니다.

참고

GridView, DetailsView 및 FormView 컨트롤의 삽입, 편집 및 삭제 기능에 대해 이미 설명했으므로 이 자습서에서는 이러한 작업을 지원하도록 SqlDataSource 컨트롤을 구성하는 데 중점을 줍니다. GridView, DetailsView 및 FormView 내에서 이러한 기능을 구현해야 하는 경우 삽입, 업데이트 및 삭제 개요부터 시작하여 데이터 편집 , 삽입 및 삭제 자습서로 돌아갑니다.

1단계: INSERT, UPDATE 및 DELETE 문 지정

지난 두 자습서에서 살펴보았듯이 SqlDataSource 컨트롤에서 데이터를 검색하려면 다음 두 가지 속성을 설정해야 합니다.

  1. ConnectionString쿼리를 보낼 데이터베이스를 지정하는 및
  2. SelectCommand- 결과를 반환하기 위해 실행할 임시 SQL 문 또는 저장 프로시저 이름을 지정합니다.

매개 변수가 있는 값의 경우 SelectCommand 매개 변수 값은 SqlDataSource 컬렉션을 SelectParameters 통해 지정되며 하드 코딩된 값, 일반적인 매개 변수 원본 값(querystring 필드, 세션 변수, 웹 컨트롤 값 등)을 포함하거나 프로그래밍 방식으로 할당할 수 있습니다. SqlDataSource 컨트롤의 Select() 메서드가 프로그래밍 방식으로 또는 데이터 웹 컨트롤에서 자동으로 호출되면 데이터베이스에 대한 연결이 설정되고 매개 변수 값이 쿼리에 할당되고 명령이 데이터베이스로 셔틀됩니다. 그런 다음 결과는 컨트롤의 DataSourceMode 속성 값에 따라 DataSet 또는 DataReader로 반환됩니다.

SqlDataSource 컨트롤은 데이터 선택과 함께 , UPDATE및 SQL 문을 거의 동일한 방식으로 제공하여 데이터를 삽입, 업데이트 및 DELETE 삭제하는 INSERT데 사용할 수 있습니다. 실행할 , UpdateCommandDeleteCommand 속성을 INSERT, UPDATEDELETE SQL 문에 할당InsertCommand하기만 하면 됩니다. 문에 매개 변수가 있는 경우(대부분의 경우와 같이) , UpdateParametersDeleteParameters 컬렉션에 InsertParameters포함합니다.

InsertCommand, UpdateCommand또는 DeleteCommand 값을 지정하면 해당 데이터 웹 컨트롤의 스마트 태그에서 삽입 사용, 편집 사용 또는 삭제 사용 옵션을 사용할 수 있게 됩니다. 이를 설명하기 위해 SqlDataSource Control 자습서를 사용하여 데이터 쿼리 자습서에서 Querying.aspx 만든 페이지의 예제를 가져와서 삭제 기능을 포함하도록 보강해 보겠습니다.

먼저 폴더에서 InsertUpdateDelete.aspxSqlDataSourceQuerying.aspx 페이지를 엽니다. 페이지의 Designer Querying.aspx 첫 번째 예제(및 컨트롤)에서 SqlDataSource 및 GridView1 GridView를 ProductsDataSource 선택합니다. 두 컨트롤을 선택한 후 편집 메뉴로 이동하여 복사를 선택하거나 Ctrl+C를 누릅니다. 다음으로 의 Designer InsertUpdateDelete.aspx 이동하여 컨트롤에 붙여넣습니다. 두 컨트롤을 로 InsertUpdateDelete.aspx이동한 후 브라우저에서 페이지를 테스트합니다. 데이터베이스 테이블의 모든 레코드에 ProductID대한 , ProductNameUnitPrice 열 값이 Products 표시됩니다.

모든 제품이 나열되고 ProductID별로 정렬됩니다.

그림 1: 모든 제품이 나열되고 순서가 지정됩니다 ProductID (전체 크기 이미지를 보려면 클릭).

SqlDataSource의 DeleteCommand 및 DeleteParameters 속성 추가

이 시점에서 테이블의 모든 레코드 Products 를 반환하는 SqlDataSource와 이 데이터를 렌더링하는 GridView가 있습니다. 목표는 사용자가 GridView를 통해 제품을 삭제할 수 있도록 이 예제를 확장하는 것입니다. 이렇게 하려면 SqlDataSource 컨트롤 및 DeleteParameters 속성에 DeleteCommand 대한 값을 지정한 다음 삭제를 지원하도록 GridView를 구성해야 합니다.

DeleteParameters 속성은 DeleteCommand 다음과 같은 여러 가지 방법으로 지정할 수 있습니다.

  • 선언적 구문을 통해
  • Designer 속성 창
  • 데이터 원본 구성 마법사의 사용자 지정 SQL 문 또는 저장 프로시저 지정 화면에서
  • 데이터 원본 구성 마법사의 보기 테이블에서 열 지정 화면의 고급 단추를 통해 실제로 및 DeleteParameters 속성에 DeleteCommand 사용되는 SQL 문 및 매개 변수 컬렉션을 자동으로 생성 DELETE 합니다.

2단계에서 문을 자동으로 DELETE 만드는 방법을 살펴보겠습니다. 지금은 데이터 원본 구성 마법사 또는 선언적 구문 옵션도 작동하지만 Designer 속성 창 사용하겠습니다.

의 Designer InsertUpdateDelete.aspxSqlDataSource를 클릭한 ProductsDataSource 다음 속성 창 표시합니다(보기 메뉴에서 속성 창 선택하거나 F4 키를 누르기만 하면 됩니다). 줄임표를 표시할 DeleteQuery 속성을 선택합니다.

DeleteQuery 속성이 선택된 ProductsDataSource 속성 창 보여 주는 스크린샷

그림 2: 속성 창에서 DeleteQuery 속성 선택

참고

SqlDataSource에는 DeleteQuery 속성이 없습니다. 대신 DeleteQuery는 및 DeleteParameters 속성의 DeleteCommand 조합이며 Designer 통해 창을 볼 때만 속성 창 나열됩니다. 원본 보기에서 속성 창 보면 대신 속성을 찾을 수 DeleteCommand 있습니다.

DeleteQuery 속성의 줄임표를 클릭하여 명령 및 매개 변수 편집기 대화 상자를 표시합니다(그림 3 참조). 이 대화 상자에서 SQL 문을 지정 DELETE 하고 매개 변수를 지정할 수 있습니다. 명령 텍스트 상자에 다음 쿼리를 DELETE 입력합니다(원하는 경우 수동으로 또는 쿼리 작성기를 사용).

DELETE FROM Products
WHERE ProductID = @ProductID

다음으로 매개 변수 새로 고침 단추를 클릭하여 매개 변수를 @ProductID 아래 매개 변수 목록에 추가합니다.

delete 명령 매개 변수 목록에 <span class=@ProductID 매개 변수가 추가된 명령 및 매개 변수 편집기 창을 보여 주는 스크린샷 />

그림 3: 속성 창에서 DeleteQuery 속성을 선택합니다(전체 크기 이미지를 보려면 클릭).

이 매개 변수에 대한 값을 제공하지 마세요 (매개 변수 원본은 없음으로 둡니다). GridView에 삭제 지원을 추가하면 GridView는 삭제 단추를 클릭한 행에 DataKeys 대한 컬렉션 값을 사용하여 이 매개 변수 값을 자동으로 제공합니다.

참고

쿼리에 DELETE 사용되는 매개 변수 이름은 GridView, DetailsView 또는 FormView의 DataKeyNames 값 이름과 동일해야 합니다. 즉, Products 테이블의 기본 키 열 이름(따라서 GridView의 DataKeyNames 값)이 이므로 문의 매개 변수 DELETE 는 의도적으로 이름이 지정 @ProductID 됩니다ProductID(예@ID: ).

매개 변수 이름과 값이 DataKeyNames 일치하지 않으면 GridView는 컬렉션의 DataKeys 값을 매개 변수에 자동으로 할당할 수 없습니다.

명령 및 매개 변수 편집기 대화 상자에 삭제 관련 정보를 입력한 후 확인을 클릭하고 원본 보기로 이동하여 결과 선언적 태그를 검사합니다.

<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>

속성 <DeleteParameters> 과 섹션 및 라는 productIDParameter 개체가 추가 DeleteCommand 되었습니다.

삭제를 위한 GridView 구성

속성이 DeleteCommand 추가되면 이제 GridView의 스마트 태그에 삭제 사용 옵션이 포함됩니다. 계속 진행하여 이 확인란을 검사. 삽입, 업데이트 및 삭제 개요에서 설명한 대로 GridView는 속성이 로 설정된 CommandField를 ShowDeleteButton 추가합니다True. 그림 4와 같이 브라우저를 통해 페이지를 방문할 때 삭제 단추가 포함됩니다. 일부 제품을 삭제하여 이 페이지를 테스트합니다.

이제 각 GridView 행에 삭제 단추가 포함됩니다.

그림 4: 각 GridView 행에 삭제 단추가 포함됨(전체 크기 이미지를 보려면 클릭)

삭제 단추를 클릭하면 포스트백이 발생하면 GridView는 매개 변수에 삭제 단추를 클릭한 행의 DataKeys 컬렉션 값 값을 할당 ProductID 하고 SqlDataSource의 Delete() 메서드를 호출합니다. 그런 다음 SqlDataSource 컨트롤은 데이터베이스에 연결하고 문을 실행합니다 DELETE . 그런 다음 GridView는 SqlDataSource에 다시 바인딩되어 다시 돌아와 현재 제품 집합(더 이상 방금 삭제된 레코드를 포함하지 않음)을 표시합니다.

참고

GridView는 컬렉션을 DataKeys 사용하여 SqlDataSource 매개 변수를 채우기 때문에 GridView의 DataKeyNames 속성을 기본 키를 구성하는 열로 설정하고 SqlDataSource에서 SelectCommand 이러한 열을 반환해야 합니다. 또한 SqlDataSource s DeleteCommand 의 매개 변수 이름을 로 설정하는 것이 중요합니다 @ProductID. 속성이 DataKeyNames 설정되지 않았거나 매개 변수 이름이 @ProductsID이 아니면 삭제 단추를 클릭하면 포스트백이 발생하지만 실제로 레코드는 삭제되지 않습니다.

그림 5에서는 이러한 상호 작용을 그래픽으로 보여 줍니다. 데이터 웹 컨트롤에서 삽입, 업데이트 및 삭제와 관련된 이벤트 체인에 대한 자세한 내용은 삽입, 업데이트 및 삭제와 관련된 이벤트 검사 자습서를 참조하세요.

GridView에서 삭제 단추를 클릭하면 SqlDataSource의 Delete() 메서드가 호출됩니다.

그림 5: GridView에서 삭제 단추를 클릭하면 SqlDataSource의 Delete() 메서드가 호출됩니다.

2단계: , UPDATEDELETE 문 자동 생성 INSERT

1단계에서 검사한 INSERT대로 , UPDATEDELETE SQL 문은 속성 창 또는 컨트롤의 선언적 구문을 통해 지정할 수 있습니다. 그러나 이 방법을 사용하려면 단조롭고 오류가 발생하기 쉬운 SQL 문을 수동으로 작성해야 합니다. 다행히 데이터 원본 구성 마법사는 보기 화면에서 열 지정을 INSERT사용할 때 , UPDATEDELETE 문을 자동으로 생성하는 옵션을 제공합니다.

이 자동 생성 옵션을 살펴보겠습니다. 의 Designer InsertUpdateDelete.aspx DetailsView를 추가하고 해당 ID 속성을 로 ManageProducts설정합니다. 다음으로 DetailsView의 스마트 태그에서 새 데이터 원본을 만들고 라는 ManageProductsDataSourceSqlDataSource를 만듭니다.

ManageProductsDataSource라는 새 SqlDataSource 만들기

그림 6: 새 SqlDataSource 이름 ManageProductsDataSource 만들기(전체 크기 이미지를 보려면 클릭)

데이터 원본 구성 마법사에서 연결 문자열 사용하도록 NORTHWINDConnectionString 선택하고 다음을 클릭합니다. 문 선택 구성 화면에서 테이블 또는 보기 라디오에서 열 지정 단추를 선택한 상태로 두고 드롭다운 목록에서 테이블을 선택합니다 Products . ProductID확인란 목록에서 , ProductName, UnitPriceDiscontinued 열을 선택합니다.

Products 테이블을 사용하여 ProductID, ProductName, UnitPrice 및 불연속 열을 반환합니다.

그림 7: 테이블을 사용하여 Products , , ProductNameUnitPriceDiscontinued 열을 반환ProductID합니다(전체 크기 이미지를 보려면 클릭).

선택한 테이블 및 열에 따라 , UPDATE및 문을 자동으로 생성INSERT하려면 고급 단추를 클릭하고 , UPDATE및 문 생성 INSERT확인란을 DELETEDELETE 검사.

INSERT, UPDATE 및 DELETE 문 생성 확인란을 선택합니다.

그림 8: , 및 DELETE 문 생성 INSERTUPDATE확인란을 선택합니다.

선택한 테이블에 기본 키가 있고 DELETE 기본 키 열(또는 열)이 반환된 열 목록에 포함된 경우에만 , UPDATE및 문 생성 INSERT확인란을 확인할 수 있습니다. 낙관적 동시성 사용 확인란은 생성 INSERT, UPDATEDELETE 문 확인란이 선택되면 선택할 수 있게 되며, 결과 UPDATEDELETE 문의 절을 보강 WHERE 하여 낙관적 동시성 제어를 제공합니다. 지금은 이 확인란을 선택 취소된 상태로 둡니다. 다음 자습서에서는 SqlDataSource 컨트롤과의 낙관적 동시성을 살펴보겠습니다.

, UPDATEDELETE 문 생성 INSERT확인란을 선택한 후 확인을 클릭하여 문 구성 화면으로 돌아가서 다음, 마침을 차례로 클릭하여 데이터 원본 구성 마법사를 완료합니다. 마법사를 완료하면 Visual Studio는 , ProductName및 열의 DetailsViewProductID에 BoundFields를 UnitPrice 추가하고 열에 대한 CheckBoxField를 Discontinued 추가합니다. DetailsView의 스마트 태그에서 이 페이지를 방문하는 사용자가 제품을 단계별로 실행할 수 있도록 페이징 사용 옵션을 검사. DetailsView WidthHeight 속성도 지웁습니다.

스마트 태그에는 삽입 사용, 편집 사용 및 삭제 사용 옵션을 사용할 수 있습니다. 이는 SqlDataSource에 다음 선언적 구문과 같이 , UpdateCommandDeleteCommand에 대한 InsertCommand값이 포함되어 있기 때문입니다.

<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>

SqlDataSource 컨트롤에 해당 , UpdateCommandDeleteCommand 속성에 대해 자동으로 설정된 값이 InsertCommand있는 방법을 확인합니다. 및 UpdateCommand 속성에서 InsertCommand 참조되는 열 집합은 문의 열을 기반으로 SELECT 합니다. 즉, 및 UpdateCommandInsertCommand모든 Products 열이 있는 대신 에 지정된 SelectCommand 열만 있습니다(이 ProductID열은 편집할 때 값을 변경할 수 없고 삽입할 때 자동으로 할당되는 열이므로 IDENTITY생략됨). 또한 , UpdateCommand및 속성의 InsertCommand각 매개 변수에 대해 , UpdateParametersDeleteCommandDeleteParameters 컬렉션에 InsertParameters해당 매개 변수가 있습니다.

DetailsView의 데이터 수정 기능을 켜려면 스마트 태그에서 삽입 사용, 편집 사용 및 삭제 사용 옵션을 검사. 이렇게 하면 , ShowEditButtonShowDeleteButton 속성이 ShowInsertButton로 설정된 CommandField가 True추가됩니다.

브라우저에서 페이지를 방문하여 DetailsView에 포함된 편집, 삭제 및 새로 만들기 단추를 확인합니다. 편집 단추를 클릭하면 DetailsView가 편집 모드로 전환됩니다. 이 모드에서는 속성이 ReadOnly TextBox로 설정된 False 각 BoundField와 CheckBoxField를 확인란으로 표시합니다.

DetailsView의 기본 편집 인터페이스

그림 9: DetailsView의 기본 편집 인터페이스(전체 크기 이미지를 보려면 클릭)

마찬가지로 현재 선택한 제품을 삭제하거나 시스템에 새 제품을 추가할 수 있습니다. 문은 InsertCommand , UnitPriceDiscontinued 열에서ProductName만 작동하므로 다른 열에는 NULL 삽입 시 데이터베이스에서 할당한 또는 기본값이 있습니다. ObjectDataSource와 마찬가지로 에서 을 허용하지 NULL 않고 기본값이 없는 데이터베이스 테이블 열이 누락된 경우 InsertCommand 문을 실행 INSERT 하려고 할 때 SQL 오류가 발생합니다.

참고

DetailsView의 삽입 및 편집 인터페이스에는 어떤 종류의 사용자 지정 또는 유효성 검사가 없습니다. 유효성 검사 컨트롤을 추가하거나 인터페이스를 사용자 지정하려면 BoundFields를 TemplateFields로 변환해야 합니다. 자세한 내용은 편집 및 삽입 인터페이스에 유효성 검사 컨트롤 추가데이터 수정 인터페이스 사용자 지정 자습서를 참조하세요.

또한 업데이트 및 삭제를 위해 DetailsView는 속성이 구성된 경우에만 DataKeyNames 존재하는 현재 제품의 DataKey 값을 사용합니다. 편집 또는 삭제가 아무 효과가 없는 것처럼 보이는 경우 속성이 DataKeyNames 설정되어 있는지 확인합니다.

SQL 문 자동 생성의 제한 사항

, 및 문 생성 INSERT옵션은 테이블에서 열을 선택할 때만 사용할 수 있으므로 더 복잡한 쿼리의 경우 1단계에서 수행한 것처럼 고유한 INSERT, UPDATEDELETE 문을 작성해야 DELETE 합니다. UPDATE 일반적으로 SQL SELECT 문은 를 사용하여 JOIN 표시 목적으로 하나 이상의 조회 테이블에서 데이터를 다시 가져옵니다(예: 제품 정보를 표시할 때 테이블 필드 CategoryName 다시 Categories 가져오기). 동시에 사용자가 핵심 테이블(Products이 경우)에 데이터를 편집, 업데이트 또는 삽입할 수 있도록 허용할 수 있습니다.

INSERT, UPDATEDELETE 문을 수동으로 입력할 수 있지만 다음 시간 절약 팁을 고려합니다. 처음에 테이블에서 데이터를 다시 가져오도록 SqlDataSource를 Products 설정합니다. 데이터 원본 구성 마법사의 테이블 또는 뷰 화면에서 열 지정을 사용하여 , UPDATEDELETE 문을 자동으로 생성INSERT할 수 있습니다. 그런 다음 마법사를 완료한 후 속성 창 SelectQuery를 구성하도록 선택하거나 데이터 원본 구성 마법사로 돌아가서 사용자 지정 SQL 문 또는 저장 프로시저 지정 옵션을 사용합니다. 그런 다음 구문을 포함 JOIN 하도록 문을 업데이트 SELECT 합니다. 이 기술은 자동으로 생성된 SQL 문의 시간 절약 이점을 제공하며 보다 사용자 지정된 SELECT 문을 허용합니다.

, UPDATE및 문을 자동으로 생성하는 INSERT또 다른 제한 사항은 및 UPDATE 문의 열이 문에서 INSERT 반환된 SELECT 열을 기반으로 한다는 DELETE 것입니다. 그러나 더 많거나 적은 필드를 업데이트하거나 삽입해야 할 수 있습니다. 예를 들어 2단계의 예제에서 BoundField를 읽기 전용으로 지정하려고 UnitPrice 할 수 있습니다. 이 경우 에 UpdateCommand표시되지 않아야 합니다. 또는 GridView에 표시되지 않는 테이블 필드의 값을 설정할 수도 있습니다. 예를 들어 새 레코드를 추가할 때 값이 QuantityPerUnit TODO 로 설정되도록 할 수 있습니다.

이러한 사용자 지정이 필요한 경우 속성 창 마법사에서 사용자 지정 SQL 문 또는 저장 프로시저 지정 옵션을 통해 또는 선언적 구문을 통해 수동으로 만들어야 합니다.

참고

데이터 웹 컨트롤에 해당 필드가 없는 매개 변수를 추가할 때는 이러한 매개 변수 값에 어떤 방식으로도 값을 할당해야 합니다. 이러한 값은 또는 UpdateCommand에서 InsertCommand 직접 하드 코딩될 수 있으며, 미리 정의된 일부 원본(쿼리 문자열, 세션 상태, 페이지의 웹 컨트롤 등)에서 가져올 수도 있고, 이전 자습서에서 보았듯이 프로그래밍 방식으로 할당할 수도 있습니다.

요약

데이터 웹 컨트롤이 기본 제공 삽입, 편집 및 삭제 기능을 활용하려면 바인딩된 데이터 원본 컨트롤이 이러한 기능을 제공해야 합니다. SqlDataSourceINSERT의 경우 , 및 DELETE SQL 문을 , UPDATEUpdateCommandDeleteCommand 및 속성에 InsertCommand할당해야 합니다. 이러한 속성 및 해당 매개 변수 컬렉션은 데이터 원본 구성 마법사를 통해 수동으로 추가하거나 자동으로 생성할 수 있습니다. 이 자습서에서는 두 가지 기술을 모두 검토했습니다.

낙관적 동시성 구현 자습서에서 ObjectDataSource와 낙관적 동시성을 사용하여 조사했습니다. SqlDataSource 컨트롤은 낙관적 동시성 지원도 제공합니다. 2단계에서 설명한 대로 , UPDATEDELETE 문을 자동으로 생성할 INSERT때 마법사는 낙관적 동시성 사용 옵션을 제공합니다. 다음 자습서에서 볼 수 있듯이 SqlDataSource와 낙관적 동시성을 사용하면 및 DELETE 문의 절 UPDATE 이 수정 WHERE 되어 데이터가 페이지에 마지막으로 표시된 이후 다른 열의 값이 변경되지 않도록 합니다.

행복한 프로그래밍!

저자 정보

7개의 ASP/ASP.NET 책의 저자이자 4GuysFromRolla.com 창립자인 Scott Mitchell은 1998년부터 Microsoft 웹 기술로 작업해 왔습니다. Scott은 독립 컨설턴트, 트레이너 및 작가로 일합니다. 그의 최신 책은 샘스 티치 유어셀프 ASP.NET 24시간 만에 2.0입니다. 그는 에서mitchell@4GuysFromRolla.com 또는 에서 찾을 http://ScottOnWriting.NET수있는 자신의 블로그를 통해 도달 할 수 있습니다.