푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 애플리케이션
C# 애플리케이션

다른 카테고리

C# WinForms 데이터 저장 — Tim Corey와 함께하는 Windows 폼에서의 데이터 흐름 이해 (레슨 15)

Tim Corey
34m 39s

C# WinForms 애플리케이션에서 데이터를 저장하고 관리하는 것은 화면에 컨트롤을 배치하는 것에 그치지 않습니다. 이는 데이터가 데이터베이스나 파일로부터 모델에 들어가 Windows Form 내에서 바인딩되고, 표시되며, 조작되는 방식에 관한 것입니다. "C# From Start to Finish" 과정의 레슨 15에서 Tim Corey는 실용적인 방법으로 Create Tournament Form을 구축하면서 이 과정을 개발자와 함께 안내합니다.

이 기사에서는 그의 비디오에서 설명한 C# WinForms 데이터 저장 개념을 좀 더 깊이 있게 살펴봅니다. Visual Studio에서 그의 단계를 따라가면서 데이터를 검색하고, 컨트롤에 바인딩하고, 문제를 디버그하고, 결과를 확인하는 방법을 배웁니다.

Create Tournament Form 소개 및 그 역할

0:00에, Tim Corey는 레슨 15를 소개하고 이 Windows Form이 애플리케이션에서 중요한 전환점이라 설명합니다. 그는 이 폼이 완성되면 앱이 거의 기능적이 될 것이라고 언급합니다. 이 폼이 복잡해 보이지만, Tim은 개발자들에게 시스템이 이미 대부분의 필요한 기능을 지원한다고 안심시킵니다.

그는 이 시점까지, 모델, 데이터 연결, 테이블 및 패턴 등의 모든 이전 작업이 이미 견고한 기반을 마련했다는 점을 강조합니다. 목표는 이제 데이터를 폼과 연결하여 독립된 컨트롤이 아닌 시스템으로 작동하도록 하는 것입니다.

폼 검토 및 초기 문제 해결하기

1:10에, Tim은 Windows Form을 시작할 때마다 폼이 수행하는 작업을 검토하고 이를 논리적 덩어리로 나누기 시작한다고 설명합니다. 그는 디자이너에서 두 개의 목록 상자가 복사-붙여넣기 실수로 동일한 레이블을 가지고 있는 작은 문제를 즉시 발견합니다.

Tim은 빠르게 레이블 텍스트를 수정하고 앞으로 나아가며, 작은 UI 문제는 초기에 해결해야 한다고 언급합니다. 이 단계는 데이터가 사용자에게 표시될 때 코드만큼이나 깨끗한 설계와 명확성이 중요하다는 것을 강화합니다.

데이터 조각 및 흐름 계획하기

2:07에, Tim은 영상이 아니라면 이 폼을 어떻게 접근할지 개요를 설명합니다. 그는 다음과 같이 설명합니다:

  • Select Team 드롭다운 채우기

  • 선택된 팀 목록 상자 채우기

  • Add Team 작업 연결하기

  • 상금 처리하기

  • 나중에 생성 및 삭제 작업 처리하기

영상 레슨이기 때문에, Tim은 여러 덩어리를 함께 그룹화합니다. 이 계획 단계는 WinForms 애플리케이션 내부의 콜렉션, 컨트롤 및 이벤트 사이에서 데이터가 흐를 방식을 정의하기 때문에 중요합니다.

팀 데이터를 저장하기 위한 콜렉션 생성하기

3:45에, Tim은 F7을 사용하여 코드 보기로 전환하고 솔루션 탐색기를 통해 폼의 코드 비하인드 파일로 이동합니다. 그는 Select Team 드롭다운에 TeamModel 객체의 콜렉션이 필요하다고 설명합니다.

그는 availableTeams라는 List을 만듭니다. 이 목록은 데이터 소스에서 검색한 데이터를 위한 메모리 내 저장소 역할을 합니다. Tim은 현재는 새 목록으로 초기화되어 있지만, 구성에 따라 나중에 데이터베이스나 텍스트 파일에서 채워질 것이라고 설명합니다.

이는 WinForms가 데이터를 컨트롤이 아닌 콜렉션에 저장한다는 점을 보여주는 중요한 순간입니다.

데이터 검색 계약 정의하기

5:01에, Tim은 GetTeamAll이라는 메서드를 만듭니다. 그는 이 메서드가 프로젝트 초기에 사용된 GetPersonAll과 같은 패턴에 맞춰 있는 방법을 설명합니다. 그는 이를 IDataConnection 인터페이스에 추가하며, 데이터가 검색되는 방식을 정의하는 계약이라고 부릅니다.

그는 그런 다음 SQL 및 텍스트 커넥터에 이 메서드를 구현합니다. Tim은 일관성을 강조하며, 정립된 패턴을 따르는 것이 시스템을 더 쉽게 유지 관리하고 이해할 수 있도록 만든다고 설명합니다.

저장 프로시저 및 테이블 작업하기

6:32에, Tim은 SQL Server로 이동하여 저장 프로시저에 대해 설명합니다. 그는 기존의 프로시저를 검토하고, 이 경우에는 적합하지 않다고 설명합니다. 토너먼트가 아직 존재하지 않기 때문에, 그는 spTeam_GetAll이라는 이름의 새 저장 프로시저를 만듭니다.

이 프로시저는:

  • 매개변수를 받지 않음

  • 간단한 select 문 실행

  • Teams 테이블에서 모든 팀 레코드를 검색

Tim은 프로시저를 실행하여 반환된 데이터를 확인합니다. 이 단계는 데이터를 폼에 바인딩하기 전에 데이터 소스가 제대로 작동함을 보장합니다.

루프를 사용하여 관련 데이터 채우기

8:45에, Tim은 팀만 검색하는 것으로는 충분하지 않다고 설명합니다. 각 팀에는 별도의 테이블에 저장된 구성원 목록이 포함되어 있습니다. 그는 TeamModel에 TeamMembers 컬렉션이 포함되어 있으며 이를 수동으로 채워야 한다고 보여줍니다.

이를 위해, Tim은 foreach 루프를 사용하여 각 팀을 반복합니다. 각 팀 인스턴스에 대해 팀 ID로 사람을 검색하는 다른 저장 프로시저를 호출합니다. 이 과정은 관련 데이터를 가진 완전한 모델을 구축합니다.

Tim은 이 단계가 애플리케이션이 완전한 데이터를 가지는 것을 보장한다고 설명합니다, 부분적인 기록이 아니라.

저장된 데이터를 Windows Form에 연결하기

12:25에, Tim은 Create Tournament Form으로 돌아와 임시 목록을 구성된 연결 문자열을 사용한 실제 데이터 호출로 대체합니다:

GlobalConfig.Connection.GetTeamAll()

이 줄은 데이터를 검색하여 메모리에 저장합니다.

그는 그런 다음 UI 컨트롤에 데이터를 바인딩하는 InitializeLists 메서드를 만듭니다:

  • DataSource

  • DisplayMember

Tim은 TeamName을 표시 속성으로 신중하게 선택하여 사용자에게 객체 참조 대신 의미 있는 텍스트를 보여주도록 보장합니다.

에러 디버깅 및 데이터 검증하기

15:17에, 팀은 애플리케이션을 실행하고 누락된 매개변수와 관련된 오류를 마주합니다. 그는 메시지를 침착하게 읽으며, 디버깅이 개발의 일반적인 부분임을 설명합니다.

그는 필요한 매개변수를 전달하고 명령 유형을 저장 프로시저로 설정하여 문제를 해결합니다. 드롭다운이 여전히 비어있을 때, 팀은 추가 조사를 합니다.

22:35에, 그는 InitializeLists 메서드가 호출된 적이 없다는 것을 깨닫습니다. 생성자에 추가됨으로써, 데이터는 올바르게 표시됩니다. 팀은 이 순간을 사용해 시스템에서 조각들이 어떻게 맞춰지는지를 검토하는 것이 중요하다고 강조합니다.

메모리에서 선택된 팀 관리하기

23:54에, 팀은 selectedTeams라는 또 다른 목록을 만듭니다. 이 컬렉션은 토너먼트를 위해 선택된 팀들을 저장합니다. 그는 이 패턴이 프로젝트의 초기 양식들과 동일하다고 설명하며, 재사용과 일관성을 강화합니다.

그는 이 목록을 다른 목록 상자에 바인딩하여 선택된 항목을 쉽게 표시할 수 있도록 합니다.

버튼 이벤트 연결 및 데이터 이동하기

28:07에, 팀은 디자이너에서 Add Team 버튼을 더블 클릭하여 클릭 이벤트를 생성합니다. 그는 드롭다운에서 선택된 항목을 가져와 TeamModel로 다시 변환하고 null이 아닌지 확인합니다.

그는 그런 다음 팀을 availableTeams에서 제거하고 selectedTeams에 추가하며, 두 목록을 다시 바인딩합니다. 팀은 데이터 소스를 재설정하여 UI가 변경 사항을 즉시 반영하도록 보장한다고 설명합니다.

이번 수업의 데이터 저장 마무리하기

32:13에, 팀은 달성한 내용을 요약합니다:

  • 데이터가 데이터베이스에서 검색됨

  • 콜렉션에 저장됨

  • WinForms 컨트롤에 바인딩됨

  • 목록 간에 이동됨

  • 디버깅되고 검증됨

그는 남은 작업이 이 기반 위에서 구축될 것이라고 언급합니다.

Tim Corey의 최종 생각

팀은 비디오를 닫으며 개발자들에게 계속 연습하라고 격려합니다. 그는 C# WinForms 애플리케이션에서 데이터가 저장, 검색, 표시되는 방식을 이해하는 것이 신뢰할 수 있는 시스템 구축에 중요하다고 시청자들에게 상기시킵니다.

이번 수업은 개발자들이 실제 데이터, 실제 오류, 실제 워크플로우를 단계별로 다루는 방법을 보여줍니다, 이는 Tim Corey가 시연한 것과 정확히 동일하게.

Hero Worlddot related to C# WinForms 데이터 저장 — Tim Corey와 함께하는 Windows 폼에서의 데이터 흐�...
Hero Affiliate related to C# WinForms 데이터 저장 — Tim Corey와 함께하는 Windows 폼에서의 데이터 흐�...

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해