C#에서 콤보박스(ComboBox)에 값을 설정하는 방법에 대해 알아보겠습니다. 😊 특히, 오라클 데이터베이스와 연결하여 콤보박스에 데이터를 바인딩하는 방법도 함께 다뤄보겠습니다. 이 글에서는 기본적인 콤보박스 설정부터, 실제 데이터베이스에서 값을 불러와 바인딩하는 과정까지 소개할 예정입니다~
C# 콤보박스(ComboBox)에 값 넣는 방법
C#에서 콤보박스에 값을 넣는 작업은 아주 간단하게 이루어집니다. 먼저, 데이터 소스를 지정하고 콤보박스에 표시할 항목을 설정하면 됩니다. 보통 DataSource, DisplayMember, ValueMember 속성을 사용하여 데이터를 바인딩하고, 항목이 표시될 때 사용자에게 어떤 정보가 보이는지, 내부적으로 어떤 값이 처리될지를 지정합니다.
기본적인 콤보박스 설정 예시
간단하게 Enumerable을 사용하여 데이터 소스를 만들고 콤보박스에 값을 바인딩하는 코드는 다음과 같습니다.
cmb.DataSource = Enumerable.Range(1, 5)
.Select(x => new { Name = $"Test{x}", Id = x }).ToList();
cmb.DisplayMember = "Name"; // 콤보박스에 표시할 값
cmb.ValueMember = "Id"; // 선택 시 내부적으로 사용할 값
위 코드에서 Enumerable.Range(1, 5)는 1부터 5까지의 숫자를 생성하고, 이를 Select를 사용해 각각의 숫자를 ‘Test’라는 이름과 함께 새롭게 정의합니다. 최종적으로 콤보박스에는 'Test1', 'Test2', ..., 'Test5' 등의 항목이 표시되며, 각 항목에는 숫자 ID가 연결된답니다.
코드 설명 😊
- DataSource: 콤보박스에 바인딩할 데이터 소스입니다. 여기서는
Enumerable.Range로 숫자 목록을 생성했지만, 데이터베이스에서 데이터를 불러와 바인딩 할 수도 있습니다. - DisplayMember: 사용자가 콤보박스에서 볼 수 있는 항목을 지정합니다. 여기서는 ‘Name’을 사용하여 '테스트N'을 표시하도록 했습니다.
- ValueMember: 콤보박스에서 선택한 항목에 대응하는 실제 값을 지정합니다. 여기서는 테스트 ID 값을 사용하고 있습니다.
오라클 데이터베이스와 연결하여 콤보박스에 데이터 바인딩하기
실제 개발 환경에서는 콤보박스에 정적인 데이터가 아닌, 데이터베이스에서 값을 불러와 표시해야 할 경우가 많습니다.
그리하여 오라클 데이터베이스에 연결하여 데이터를 가져오고, 콤보박스에 바인딩하는 과정을 함께 살펴보도록 하겠습니다. 😊
먼저, 오라클 데이터베이스와 연결하기 위해서는 Oracle.DataAccess.Client와 같은 라이브러리를 사용해야 합니다. NuGet 패키지를 통해 해당 라이브러리를 추가할 수 있습니다.
1. 오라클 데이터베이스 연결
오라클 데이터베이스에 연결하기 위해서는 OracleConnection을 사용합니다. 아래는 데이터베이스에 연결하는 기본 코드입니다.
using Oracle.DataAccess.Client;
string connectionString = "User Id=your_user_id;Password=your_password;Data Source=your_data_source";
using (OracleConnection conn = new OracleConnection(connectionString))
{
conn.Open();
// 연결이 성공하면 여기서 데이터를 가져오게 됩니다.
}
2. 데이터를 불러와 콤보박스에 바인딩
오라클 데이터베이스에서 데이터를 가져와 콤보박스에 바인딩하는 예시입니다. 여기서는 'EMP' 테이블에서 데이터를 불러오고, 이를 콤보박스에 표시하는 방식으로 진행하겠습니다.
private void BEOMSANG()
{
string connectionString = $"User Id={id};Password={pw};Data Source={ds}";
using (OracleConnection conn = new OracleConnection(connectionString))
{
conn.Open();
string query = "SELECT ENAME, EMPNO FROM EMP";
OracleDataAdapter adapter = new OracleDataAdapter(query, conn);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
// 콤보박스에 바인딩
cmb.DataSource = dataTable;
cmb.DisplayMember = "ENAME"; // 데이터테이블의 컬럼명
cmb.ValueMember = "EMPNO"; // 데이터테이블의 컬럼명
}
}
이 코드는 OracleDataAdapter를 사용해 DataTable에 데이터를 채운 후, 콤보박스에 바인딩하는 예제입니다. DataTable은 ENAME과 EMPNO를 포함한 데이터를 담고 있으며, 이 데이터를 콤보박스에 바인딩합니다. DisplayMember와 ValueMember는 각각 데이터를 표시할 컬럼과 내부적으로 사용할 컬럼을 나타냅니다.
3. 코드 설명
- OracleConnection: 오라클 데이터베이스와 연결을 담당하는 객체입니다. 연결 문자열을 사용하여 데이터베이스 서버에 접속합니다.
- OracleCommand: 데이터베이스에 SQL 쿼리를 실행할 때 사용됩니다. 여기서는
SELECT ename, empno FROM emp쿼리를 사용하여 사원 이름과 번호를 불러옵니다. - OracleDataReader: SQL 쿼리의 결과를 읽어들이는 객체입니다. 쿼리 결과를 한 줄씩 읽어들이며, 각 사원 정보를
List<object>에 저장합니다. - cmb.DataSource: 콤보박스에 데이터 소스를 설정합니다. 데이터는
ename과empno를 포함한 리스트로 바인딩됩니다.
오라클 어댑터 사용하기
private void BEOMSANG()
{
string connectionString = $"User Id={id};Password={pw};Data Source={ds}";
using (OracleConnection conn = new OracleConnection(connectionString))
{
conn.Open();
string query = "SELECT ENAME, EMPNO FROM EMP";
OracleDataAdapter adapter = new OracleDataAdapter(query, conn);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
// 콤보박스에 바인딩
cmb.DataSource = dataTable;
cmb.DisplayMember = "ENAME"; // 데이터테이블의 컬럼명
cmb.ValueMember = "EMPNO"; // 데이터테이블의 컬럼명
}
}
이 코드는 OracleDataAdapter를 사용해 DataTable에 데이터를 채운 후, 콤보박스에 바인딩하는 예제입니다. DataTable은 ENAME과 EMPNO를 포함한 데이터를 담고 있으며, 이 데이터를 콤보박스에 바인딩합니다. DisplayMember와 ValueMember는 각각 데이터를 표시할 컬럼과 내부적으로 사용할 컬럼을 나타냅니다.
어댑터 및 데이터테이블을 활용할 대에는 ValueMember의 컬럼 명칭에 신경써 주세요. 잘못 입력하면 다음과 같은 오류가 발생해요!
System.ArgumentException: '새 표시 멤버에 바인딩할 수 없습니다.
매개 변수 이름: newDisplayMember'
C# 콤보박스 설정
C#에서 콤보박스에 값을 넣는 방법에 대해 알아보았습니다~ DataSource, DisplayMember, ValueMember를 적절하게 설정하면 쉽게 원하는 값을 표시할 수 있을 거예요. (다른 방법도 물론 있는데, 데이터소스를 사용하는 경우가 많아요.)
또한, 오라클 데이터베이스와 연결하여 실제 데이터를 가져와 바인딩하는 방법도 크게 다르지 않으며, 데이터베이스와의 연결, SQL 쿼리 실행, 데이터 읽기 단계를 거쳐 콤보박스에 데이터를 바인딩할 수 있습니다.
이와 같은 방식으로, 다양한 데이터 소스와 연결하여 콤보박스를 유연하게 활용해 보세요.
