방법: LINQ를 사용하여 데이터베이스의 데이터 수정(Visual Basic)
LINQ(Language-Integrated Query) 쿼리를 사용하면 데이터베이스 정보에 쉽게 액세스하고 데이터베이스의 값을 수정할 수 있습니다.
다음 예제에서는 SQL Server 데이터베이스에서 정보를 검색하고 업데이트하는 새 애플리케이션을 만드는 방법을 보여 줍니다.
이 문서의 예제에서는 Northwind 샘플 데이터베이스를 사용합니다. 데이터베이스를 가져오려면 샘플 데이터베이스 다운로드하는참조하세요.
데이터베이스에 대한 연결을 만들려면
Visual Studio에서 보기 메뉴를 클릭하여 서버 탐색기/데이터베이스 탐색기 연 다음, 서버 탐색기/데이터베이스 탐색기선택합니다.
데이터 연결 항목에서 마우스 오른쪽 버튼을 클릭하고 서버 탐색기/데이터베이스 탐색기에서 연결 추가를 클릭합니다.
Northwind 샘플 데이터베이스에 대한 유효한 연결을 지정합니다.
LINQ to SQL 파일을 사용하여 프로젝트를 추가하려면
Visual Studio의 파일 메뉴에서 새 가리킨 다음 프로젝트 클릭합니다. Visual Basic Windows Forms 애플리케이션 프로젝트 유형으로 선택합니다.
프로젝트 메뉴에서 새 항목 추가클릭합니다. LINQ to SQL 클래스 항목 템플릿을 선택합니다.
파일 이름을
northwind.dbml
으로 지정하세요. 추가클릭합니다. 개체 관계형 디자이너(O/R 디자이너)가northwind.dbml
파일에 대해 열립니다.
쿼리 및 수정을 위해 테이블을 디자이너에 추가하려면
서버 탐색기/데이터베이스 탐색기Northwind 데이터베이스에 대한 연결을 확장합니다. 테이블 폴더를 확장합니다.
O/R 디자이너를 닫은 경우 이전에 추가한
northwind.dbml
파일을 두 번 클릭하여 다시 열 수 있습니다.Customers 테이블을 클릭하고 디자이너의 왼쪽 창으로 끌어옵니다.
디자이너는 프로젝트에 대한 새 Customer 개체를 만듭니다.
변경 내용을 저장하고 디자이너를 닫습니다.
프로젝트를 저장합니다.
데이터베이스를 수정하고 결과를 표시하는 코드를 추가하려면
프로젝트의 기본 Windows Form인 Form1에 도구 상자에서 DataGridView 컨트롤을 끌어다 놓습니다.
O/R 디자이너에 테이블을 추가한 경우 디자이너는 프로젝트에 DataContext 개체를 추가했습니다. 이 개체에는 Customers 테이블에 액세스하는 데 사용할 수 있는 코드가 포함되어 있습니다. 또한 테이블에 대한 로컬 Customer 개체 및 Customers 컬렉션을 정의하는 코드가 포함되어 있습니다. 프로젝트의 DataContext 개체 이름은 .dbml 파일의 이름을 기반으로 합니다. 이 프로젝트의 경우 DataContext 개체의 이름은
northwindDataContext
.코드에서 DataContext 개체의 인스턴스를 만들고 O/R 디자이너에서 지정한 Customers 컬렉션을 쿼리하고 수정할 수 있습니다. Customers 컬렉션에 대한 변경 내용은 DataContext 개체의 SubmitChanges 메서드를 호출하여 제출할 때까지 데이터베이스에 반영되지 않습니다.
Windows Form Form1을 두 번 클릭하여 Load 이벤트에 코드를 추가하여 DataContext속성으로 노출되는 Customers 테이블을 쿼리합니다. 다음 코드를 추가합니다.
Private db As northwindDataContext Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs ) Handles MyBase.Load db = New northwindDataContext() RefreshData() End Sub Private Sub RefreshData() Dim customers = From cust In db.Customers Where cust.City(0) = "W" Select cust DataGridView1.DataSource = customers End Sub
도구 상자에서 세 개의 Button 컨트롤을 폼으로 끌어옵니다. 첫 번째
Button
컨트롤을 선택합니다. 속성 창에서,Button
컨트롤의Name
을/를AddButton
으로/로 설정하고,Text
을/를Add
으로/로 설정합니다. 두 번째 단추를 선택하고Name
속성을UpdateButton
으로 설정하고Text
속성을Update
으로 설정하십시오. 세 번째 단추를 선택하고Name
속성을DeleteButton
로 설정하고Text
속성을Delete
로 설정하십시오.추가 단추를 두 번 클릭하여
Click
이벤트에 코드를 추가합니다. 다음 코드를 추가합니다.Private Sub AddButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs ) Handles AddButton.Click Dim cust As New Customer With { .City = "Wellington", .CompanyName = "Blue Yonder Airlines", .ContactName = "Jill Frank", .Country = "New Zealand", .CustomerID = "JILLF"} db.Customers.InsertOnSubmit(cust) Try db.SubmitChanges() Catch ' Handle exception. End Try RefreshData() End Sub
업데이트 단추를 두 번 클릭하여
Click
이벤트에 코드를 추가합니다. 다음 코드를 추가합니다.Private Sub UpdateButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs ) Handles UpdateButton.Click Dim updateCust = (From cust In db.Customers Where cust.CustomerID = "JILLF").ToList()(0) updateCust.ContactName = "Jill Shrader" updateCust.Country = "Wales" updateCust.CompanyName = "Red Yonder Airlines" updateCust.City = "Cardiff" Try db.SubmitChanges() Catch ' Handle exception. End Try RefreshData() End Sub
삭제 단추를 두 번 클릭하여
Click
이벤트에 코드를 추가합니다. 다음 코드를 추가합니다.Private Sub DeleteButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs ) Handles DeleteButton.Click Dim deleteCust = (From cust In db.Customers Where cust.CustomerID = "JILLF").ToList()(0) db.Customers.DeleteOnSubmit(deleteCust) Try db.SubmitChanges() Catch ' Handle exception. End Try RefreshData() End Sub
F5 키를 눌러 프로젝트를 실행합니다. 추가 클릭하여 새 레코드를 추가합니다. 업데이트 클릭하여 새 레코드를 수정합니다. 삭제 클릭하여 새 레코드를 삭제합니다.
또한 참조
.NET