SqlDataSource를 사용하여 데이터 삽입, 업데이트 및 삭제(C#)
작성자 : Scott Mitchell
이전 자습서에서는 ObjectDataSource 컨트롤이 데이터 삽입, 업데이트 및 삭제를 허용하는 방법을 알아보았습니다. SqlDataSource 컨트롤은 동일한 작업을 지원하지만 접근 방식은 다르며 이 자습서에서는 데이터를 삽입, 업데이트 및 삭제하도록 SqlDataSource를 구성하는 방법을 보여 줍니다.
소개
삽입, 업데이트 및 삭제 개요에서 설명한 대로 GridView 컨트롤은 기본 제공 업데이트 및 삭제 기능을 제공하며 DetailsView 및 FormView 컨트롤에는 기능 편집 및 삭제와 함께 지원 삽입이 포함됩니다. 이러한 데이터 수정 기능은 코드 줄을 작성할 필요 없이 데이터 소스 제어에 직접 연결할 수 있습니다. GridView, DetailsView 및 FormView 컨트롤을 사용하여 삽입, 업데이트 및 삭제를 용이하게 하기 위해 ObjectDataSource를 사용하여 검사한 삽입, 업데이트 및 삭제 개요입니다. 또는 ObjectDataSource 대신 SqlDataSource를 사용할 수 있습니다.
ObjectDataSource를 사용하여 삽입, 업데이트 및 삭제를 지원하기 위해 삽입, 업데이트 또는 삭제 작업을 수행하기 위해 호출할 개체 계층 메서드를 지정해야 했습니다. SqlDataSource를 사용하여 실행할 , UPDATE
및 DELETE
SQL 문(또는 저장 프로시저)을 제공해야 INSERT
합니다. 이 자습서에서 볼 수 있듯이 이러한 문을 수동으로 만들거나 SqlDataSource의 데이터 원본 구성 마법사에서 자동으로 생성할 수 있습니다.
참고
GridView, DetailsView 및 FormView 컨트롤의 삽입, 편집 및 삭제 기능에 대해 이미 설명했으므로 이 자습서에서는 이러한 작업을 지원하도록 SqlDataSource 컨트롤을 구성하는 데 중점을 줍니다. GridView, DetailsView 및 FormView 내에서 이러한 기능을 구현해야 하는 경우 삽입, 업데이트 및 삭제 개요부터 시작하여 데이터 편집 , 삽입 및 삭제 자습서로 돌아갑니다.
1단계: INSERT, UPDATE 및 DELETE 문 지정
지난 두 자습서에서 보았듯이 SqlDataSource 컨트롤에서 데이터를 검색하려면 다음 두 가지 속성을 설정해야 합니다.
ConnectionString
쿼리를 보낼 데이터베이스를 지정하는 및SelectCommand
- 결과를 반환하기 위해 실행할 임시 SQL 문 또는 저장 프로시저 이름을 지정합니다.
매개 변수가 있는 값의 경우 SelectCommand
매개 변수 값은 SqlDataSource 컬렉션을 SelectParameters
통해 지정되며 하드 코딩된 값, 일반적인 매개 변수 원본 값(querystring 필드, 세션 변수, 웹 컨트롤 값 등)을 포함하거나 프로그래밍 방식으로 할당할 수 있습니다. SqlDataSource 컨트롤의 Select()
메서드가 프로그래밍 방식으로 또는 데이터 웹 컨트롤에서 자동으로 호출되면 데이터베이스에 대한 연결이 설정되고 매개 변수 값이 쿼리에 할당되고 명령이 데이터베이스로 셔틀됩니다. 그런 다음 결과는 컨트롤의 DataSourceMode
속성 값에 따라 DataSet 또는 DataReader로 반환됩니다.
SqlDataSource 컨트롤은 데이터 선택과 함께 , UPDATE
및 SQL 문을 거의 동일한 방식으로 제공하여 데이터를 삽입, 업데이트 및 DELETE
삭제하는 INSERT
데 사용할 수 있습니다. 실행할 , UpdateCommand
및 DeleteCommand
속성을 INSERT
, UPDATE
및 DELETE
SQL 문에 할당InsertCommand
하기만 하면 됩니다. 문에 매개 변수가 있는 경우(대부분의 경우와 같이) , UpdateParameters
및 DeleteParameters
컬렉션에 InsertParameters
포함합니다.
InsertCommand
, UpdateCommand
또는 DeleteCommand
값을 지정하면 해당 데이터 웹 컨트롤의 스마트 태그에서 삽입 사용, 편집 사용 또는 삭제 사용 옵션을 사용할 수 있게 됩니다. 이를 설명하기 위해 SqlDataSource Control 자습서를 사용하여 데이터 쿼리 자습서에서 Querying.aspx
만든 페이지의 예제를 가져와서 삭제 기능을 포함하도록 보강해 보겠습니다.
먼저 폴더에서 InsertUpdateDelete.aspx
SqlDataSource
및 Querying.aspx
페이지를 엽니다. 페이지의 Designer Querying.aspx
첫 번째 예제(및 컨트롤)에서 SqlDataSource 및 GridView1
GridView를 ProductsDataSource
선택합니다. 두 컨트롤을 선택한 후 편집 메뉴로 이동하여 복사를 선택하거나 Ctrl+C를 누릅니다. 다음으로 의 Designer InsertUpdateDelete.aspx
이동하여 컨트롤에 붙여넣습니다. 두 컨트롤을 로 InsertUpdateDelete.aspx
이동한 후 브라우저에서 페이지를 테스트합니다. 데이터베이스 테이블의 모든 레코드에 ProductID
대한 , ProductName
및 UnitPrice
열 값이 Products
표시됩니다.
그림 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.aspx
SqlDataSource를 클릭한 ProductsDataSource
다음 속성 창 표시합니다(보기 메뉴에서 속성 창 선택하거나 F4 키를 누르기만 하면 됩니다). 줄임표를 표시할 DeleteQuery 속성을 선택합니다.
그림 2: 속성 창에서 DeleteQuery 속성 선택
참고
SqlDataSource에는 DeleteQuery 속성이 없습니다. 대신 DeleteQuery는 및 DeleteParameters
속성의 DeleteCommand
조합이며 Designer 통해 창을 볼 때만 속성 창 나열됩니다. 원본 보기에서 속성 창 보면 대신 속성을 찾을 수 DeleteCommand
있습니다.
DeleteQuery 속성의 줄임표를 클릭하여 명령 및 매개 변수 편집기 대화 상자를 표시합니다(그림 3 참조). 이 대화 상자에서 SQL 문을 지정 DELETE
하고 매개 변수를 지정할 수 있습니다. 명령 텍스트 상자에 다음 쿼리를 DELETE
입력합니다(원하는 경우 수동으로 또는 쿼리 작성기를 사용).
DELETE FROM Products
WHERE ProductID = @ProductID
다음으로 매개 변수 새로 고침 단추를 클릭하여 매개 변수를 @ProductID
아래 매개 변수 목록에 추가합니다.
delete 매개 변수가 추가된 명령 및 매개 변수 편집기 창을 보여 주는 스크린샷 />
그림 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>
과 섹션 및 라는 productID
Parameter 개체가 추가 DeleteCommand
되었습니다.
삭제를 위한 GridView 구성
속성이 DeleteCommand
추가되면 이제 GridView의 스마트 태그에 삭제 사용 옵션이 포함됩니다. 계속 진행하여 이 확인란을 검사. 삽입, 업데이트 및 삭제 개요에서 설명한 대로 GridView는 속성이 로 설정된 CommandField를 ShowDeleteButton
추가합니다true
. 그림 4와 같이 브라우저를 통해 페이지를 방문할 때 삭제 단추가 포함됩니다. 일부 제품을 삭제하여 이 페이지를 테스트합니다.
그림 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에서는 이러한 상호 작용을 그래픽으로 보여 줍니다. 데이터 웹 컨트롤에서 삽입, 업데이트 및 삭제와 관련된 이벤트 체인에 대한 자세한 내용은 삽입, 업데이트 및 삭제와 관련된 이벤트 검사 자습서를 참조하세요.
그림 5: GridView에서 삭제 단추를 클릭하면 SqlDataSource의 Delete()
메서드가 호출됩니다.
2단계: INSERT, UPDATE 및 DELETE 문 자동 생성
1단계에서 검사한 INSERT
대로 , UPDATE
및 DELETE
SQL 문은 속성 창 또는 컨트롤의 선언적 구문을 통해 지정할 수 있습니다. 그러나 이 방법을 사용하려면 단조롭고 오류가 발생하기 쉬운 SQL 문을 수동으로 작성해야 합니다. 다행히 데이터 원본 구성 마법사는 보기 화면에서 열 지정을 INSERT
사용할 때 , UPDATE
및 DELETE
문을 자동으로 생성하는 옵션을 제공합니다.
이 자동 생성 옵션을 살펴보겠습니다. 의 Designer InsertUpdateDelete.aspx
DetailsView를 추가하고 해당 ID
속성을 로 ManageProducts
설정합니다. 다음으로 DetailsView의 스마트 태그에서 새 데이터 원본을 만들고 라는 ManageProductsDataSource
SqlDataSource를 만듭니다.
그림 6: 새 SqlDataSource 명명된 ManageProductsDataSource
만들기(전체 크기 이미지를 보려면 클릭)
데이터 원본 구성 마법사에서 연결 문자열 사용하도록 NORTHWINDConnectionString
선택하고 다음을 클릭합니다. 문 선택 구성 화면에서 표에서 열 지정 또는 라디오 보기 단추를 선택한 상태로 두고 드롭다운 목록에서 테이블을 선택합니다 Products
. ProductID
확인란 목록에서 , ProductName
, UnitPrice
및 Discontinued
열을 선택합니다.
그림 7: 테이블을 사용하여 Products
, , ProductName
UnitPrice
및 Discontinued
열을 반환ProductID
합니다(전체 크기 이미지를 보려면 클릭).
선택한 테이블 및 열을 기반으로 , UPDATE
및 DELETE
문을 자동으로 생성INSERT
하려면 고급 단추를 클릭하고 , UPDATE
및 문 생성 INSERT
확인란을 DELETE
검사.
그림 8: 생성 INSERT
, UPDATE
및 DELETE
문 확인란을 선택합니다.
선택한 테이블에 기본 키가 있고 DELETE
기본 키 열(또는 열)이 반환된 열 목록에 포함된 경우에만 , UPDATE
및 문 생성 INSERT
확인란을 확인할 수 있습니다. 생성 INSERT
, UPDATE
및 DELETE
문 확인란이 선택되면 선택할 수 있게 되는 낙관적 동시성 사용 확인란은 결과 및 DELETE
문의 절을 UPDATE
보강 WHERE
하여 낙관적 동시성 제어를 제공합니다. 지금은 이 확인란을 선택하지 않은 상태로 둡니다. 다음 자습서에서는 SqlDataSource 컨트롤과의 낙관적 동시성을 살펴보겠습니다.
, 및 UPDATE
DELETE
문 생성 INSERT
확인란을 선택한 후 확인을 클릭하여 문 선택 구성 화면으로 돌아가서 다음을 클릭한 다음 마침을 클릭하여 데이터 원본 구성 마법사를 완료합니다. 마법사를 완료하면 Visual Studio는 , ProductName
및 열의 DetailsViewProductID
에 BoundFields를 UnitPrice
추가하고 열에 대한 CheckBoxField를 Discontinued
추가합니다. DetailsView의 스마트 태그에서 이 페이지를 방문하는 사용자가 제품을 단계별로 실행할 수 있도록 페이징 사용 옵션을 검사. DetailsView Width
및 Height
속성도 지웁습니다.
스마트 태그에는 삽입 사용, 편집 사용 및 삭제 사용 옵션이 있습니다. SqlDataSource에는 다음 선언적 구문과 같이 , UpdateCommand
및 DeleteCommand
에 대한 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 컨트롤에 해당 , UpdateCommand
및 DeleteCommand
속성에 대해 자동으로 설정된 값이 InsertCommand
있는 방법을 확인합니다. 및 UpdateCommand
속성에서 InsertCommand
참조되는 열 집합은 문의 열을 기반으로 SELECT
합니다. 즉, 및 UpdateCommand
에 InsertCommand
모든 Products 열이 있는 대신 에 지정된 SelectCommand
열만 있습니다(이 ProductID
열은 편집할 때 변경할 수 없고 삽입할 때 자동으로 할당되는 열이므로 IDENTITY
생략됨). 또한 , 및 속성의 InsertCommand
각 매개 변수에 대해 , UpdateParameters
및 DeleteParameters
컬렉션에 InsertParameters
해당 매개 변수가 DeleteCommand
있습니다. UpdateCommand
DetailsView의 데이터 수정 기능을 켜려면 스마트 태그에서 삽입 사용, 편집 사용 및 삭제 사용 옵션을 검사. 그러면 , ShowEditButton
및 ShowDeleteButton
속성이 ShowInsertButton
로 설정된 CommandField가 true
추가됩니다.
브라우저에서 페이지를 방문하여 DetailsView에 포함된 편집, 삭제 및 새로 만들기 단추를 확인합니다. 편집 단추를 클릭하면 DetailsView가 편집 모드로 전환됩니다. 이 모드에서는 속성이 ReadOnly
TextBox로 설정된 false
각 BoundField와 CheckBoxField를 확인란으로 표시합니다.
그림 9: DetailsView의 기본 편집 인터페이스(전체 크기 이미지를 보려면 클릭)
마찬가지로 현재 선택한 제품을 삭제하거나 시스템에 새 제품을 추가할 수 있습니다. 문은 InsertCommand
, 및 UnitPrice
Discontinued
열에서ProductName
만 작동하므로 다른 열에는 NULL
삽입 시 데이터베이스에서 할당한 또는 기본값이 있습니다. ObjectDataSource와 마찬가지로 가 을 허용하지 NULL
않고 기본값이 없는 데이터베이스 테이블 열이 없는 경우 InsertCommand
문을 실행 INSERT
하려고 할 때 SQL 오류가 발생합니다.
참고
DetailsView의 삽입 및 편집 인터페이스에는 사용자 지정 또는 유효성 검사가 없습니다. 유효성 검사 컨트롤을 추가하거나 인터페이스를 사용자 지정하려면 BoundFields를 TemplateFields로 변환해야 합니다. 자세한 내용은 편집 및 삽입 인터페이스에 유효성 검사 컨트롤 추가 및 데이터 수정 인터페이스 사용자 지정 자습서를 참조하세요.
또한 업데이트 및 삭제를 위해 DetailsView는 속성이 구성된 경우에만 DataKeyNames
존재하는 현재 제품의 DataKey
값을 사용합니다. 편집 또는 삭제가 아무런 영향을 주지 않는 것처럼 보이는 경우 속성이 DataKeyNames
설정되어 있는지 확인합니다.
SQL 문 자동 생성의 제한 사항
, 및 문 생성 INSERT
옵션은 테이블에서 열을 선택할 때만 사용할 수 있으므로 더 복잡한 쿼리의 경우 1단계에서 수행한 것처럼 고유한 INSERT
, UPDATE
및 DELETE
문을 작성해야 DELETE
합니다. UPDATE
일반적으로 SQL SELECT
문은 를 사용하여 JOIN
표시 목적으로 하나 이상의 조회 테이블에서 데이터를 다시 가져옵니다(예: 제품 정보를 표시할 때 테이블 CategoryName
필드 다시 Categories
가져오기). 동시에 사용자가 핵심 테이블(Products
이 경우)에 데이터를 편집, 업데이트 또는 삽입할 수 있도록 허용할 수 있습니다.
INSERT
, UPDATE
및 DELETE
문을 수동으로 입력할 수 있지만 다음 시간 절약 팁을 고려합니다. 처음에는 테이블에서 데이터를 다시 가져오도록 SqlDataSource를 Products
설정합니다. 테이블 또는 뷰 화면에서 열 지정 마법사의 데이터 원본 구성 마법사를 사용하여 , UPDATE
및 DELETE
문을 자동으로 생성INSERT
할 수 있습니다. 그런 다음 마법사를 완료한 후 속성 창 SelectQuery를 구성하도록 선택하거나 데이터 원본 구성 마법사로 돌아가서 사용자 지정 SQL 문 또는 저장 프로시저 지정 옵션을 사용합니다. 그런 다음 구문을 포함 JOIN
하도록 문을 업데이트 SELECT
합니다. 이 기술은 자동으로 생성된 SQL 문의 시간 절약 혜택을 제공하며 보다 사용자 지정된 SELECT
문을 허용합니다.
, UPDATE
및 문을 자동으로 생성하는 INSERT
또 다른 제한 사항은 및 UPDATE
문의 열이 문에서 INSERT
반환된 SELECT
열을 기반으로 한다는 DELETE
것입니다. 그러나 더 많거나 적은 필드를 업데이트하거나 삽입해야 할 수 있습니다. 예를 들어 2단계의 예제에서는 BoundField를 UnitPrice
읽기 전용으로 사용하려고 할 수 있습니다. 이 경우 에 표시되지 UpdateCommand
않아야 합니다. 또는 GridView에 표시되지 않는 테이블 필드의 값을 설정할 수도 있습니다. 예를 들어 새 레코드를 추가할 때 값을 TODO 로 설정할 수 있습니다 QuantityPerUnit
.
이러한 사용자 지정이 필요한 경우 속성 창 마법사에서 사용자 지정 SQL 문 또는 저장 프로시저 지정 옵션을 통해 또는 선언적 구문을 통해 수동으로 만들어야 합니다.
참고
데이터 웹 컨트롤에 해당 필드가 없는 매개 변수를 추가할 때는 이러한 매개 변수 값에 어떤 방식으로도 값을 할당해야 합니다. 이러한 값은 또는 에서 InsertCommand
직접 하드 코딩될 수 있습니다. 또는 UpdateCommand
은 미리 정의된 일부 원본(쿼리 문자열, 세션 상태, 페이지의 웹 컨트롤 등)에서 가져올 수 있으며, 이전 자습서에서 살본 것처럼 프로그래밍 방식으로 할당할 수 있습니다.
요약
데이터 웹 컨트롤이 기본 제공 삽입, 편집 및 삭제 기능을 활용하려면 바인딩된 데이터 원본 제어에서 이러한 기능을 제공해야 합니다. SqlDataSourceINSERT
의 경우 , 및 DELETE
SQL 문을 , UPDATE
UpdateCommand
및 DeleteCommand
속성에 InsertCommand
할당해야 합니다. 이러한 속성 및 해당 매개 변수 컬렉션은 데이터 원본 구성 마법사를 통해 수동으로 추가하거나 자동으로 생성할 수 있습니다. 이 자습서에서는 두 가지 기술을 모두 검토했습니다.
낙관적 동시성 구현 자습서에서 ObjectDataSource와 낙관적 동시성을 사용하여 조사했습니다. SqlDataSource 컨트롤은 낙관적 동시성 지원도 제공합니다. 2단계에서 설명한 것처럼 , UPDATE
및 DELETE
문을 자동으로 생성할 INSERT
때 마법사는 낙관적 동시성 사용 옵션을 제공합니다. 다음 자습서에서 볼 수 있듯이 SqlDataSource와 낙관적 동시성을 사용하면 및 DELETE
문의 절 UPDATE
을 수정 WHERE
하여 데이터가 페이지에 마지막으로 표시된 이후 다른 열의 값이 변경되지 않도록 합니다.
행복한 프로그래밍!
저자 정보
7개의 ASP/ASP.NET 책의 저자이자 4GuysFromRolla.com 창립자인 Scott Mitchell은 1998년부터 Microsoft 웹 기술을 연구해 왔습니다. Scott은 독립 컨설턴트, 트레이너 및 작가로 일합니다. 그의 최신 책은 샘스 자신을 가르친다 ASP.NET 2.0 24 시간. 그는 에서 찾을 수있는 그의 블로그를 통해 또는 에 mitchell@4GuysFromRolla.comhttp://ScottOnWriting.NET도달 할 수 있습니다.