[C# PL/SQL] 19.오라클 프로시저와 C#을 이용한 대시보드 애플리케이션 개발, 데이터 집계 프로시저, C# WPF WinForms 연동, 그래프 및 차트 구현.

현대 기업 환경에서 데이터의 양은 기하급수적으로 증가하고 있으며, 이를 효율적으로 관리하고 시각화하는 것이 매우 중요합니다. 본 글에서는 오라클 데이터베이스의 프로시저와 C# 언어를 이용하여 대시보드 애플리케이션을 개발하는 방법에 대해 알아보겠습니다. 특히 데이터 집계 프로시저, C# WPF 및 WinForms 연동, 그리고 그래프와 차트 구현에 포커스를 두겠습니다.

1. 오라클 프로시저란?

오라클 프로시저는 PL/SQL 언어로 작성된 하나의 저장형 블록입니다. 프로시저를 통해 복잡한 비즈니스 로직을 데이터베이스 내부에서 처리할 수 있어 네트워크 트래픽을 줄이고 성능을 향상시킬 수 있습니다.

1.1. 프로시저의 기본 구조

CREATE OR REPLACE PROCEDURE 프로시저명 IS
    -- 변수 선언
BEGIN
    -- 프로시저 코드
END;

1.2. 데이터 집계 프로시저 예제

데이터 집계를 위한 오라클 프로시저를 아래와 같이 작성할 수 있습니다. 이 예제에서는 판매 데이터에서 총 매출을 집계합니다.

CREATE OR REPLACE PROCEDURE GetTotalSales(p_start_date IN DATE, p_end_date IN DATE, o_total_sales OUT NUMBER) IS
BEGIN
    SELECT SUM(sales_amount)
    INTO o_total_sales
    FROM sales
    WHERE sale_date BETWEEN p_start_date AND p_end_date;
END;

2. C#을 이용한 데이터베이스 연동

C#에서는 Oracle.DataAccess.Client 또는 Oracle.ManagedDataAccess.Client를 사용하여 오라클 데이터베이스와 연결할 수 있습니다. 여기서는 Oracle.ManagedDataAccess.Client를 사용하는 방법을 설명합니다.

2.1. NuGet 패키지 설치

Visual Studio에서 프로젝트를 생성한 후, Package Manager Console에서 아래의 명령어를 입력하여 NuGet 패키지를 설치합니다.

Install-Package Oracle.ManagedDataAccess

2.2. 프로시저 호출 예제

다음은 C#에서 오라클 프로시저를 호출하는 예제입니다:

using Oracle.ManagedDataAccess.Client;

string connString = "User Id=myUsername;Password=myPassword;Data Source=myDataSource;";

using (OracleConnection conn = new OracleConnection(connString))
{
    conn.Open();
    using (OracleCommand cmd = new OracleCommand("GetTotalSales", conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("p_start_date", OracleDbType.Date).Value = new DateTime(2023, 1, 1);
        cmd.Parameters.Add("p_end_date", OracleDbType.Date).Value = new DateTime(2023, 12, 31);
        cmd.Parameters.Add("o_total_sales", OracleDbType.Decimal).Direction = ParameterDirection.Output;

        cmd.ExecuteNonQuery();
        
        decimal totalSales = (decimal)cmd.Parameters["o_total_sales"].Value;
        Console.WriteLine($"총 매출: {totalSales}");
    }
}

3. C# WPF/WinForms 대시보드 UI 구현

대시보드 애플리케이션은 종종 사용자가 데이터를 시각적으로 이해하고 즉시 분석할 수 있도록 도와주는 GUI를 가지고 있습니다. 다음은 WPF와 WinForms에서 데이터 집계 결과를 표시하는 방법입니다.

3.1. WPF 애플리케이션 개발

WPF에서는 XAML을 사용하여 UI를 설계할 수 있습니다. 기본적인 버튼과 텍스트 박스를 포함한 예제 XAML 코드는 다음과 같습니다.

<Window x:Class="Dashboard.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="대시보드" Height="350" Width="525">
    <Grid>
        <Button Name="btnGetSales" Content="매출 조회" Click="btnGetSales_Click" Width="100" Height="30" />
        <TextBlock Name="txtTotalSales" Text="총 매출: " FontSize="16" Margin="10,50,0,0"/>
    </Grid>
    </Window>

3.2. WPF 이벤트 핸들러

버튼 클릭 시 총 매출을 가져오는 이벤트 핸들러를 작성합니다:

private void btnGetSales_Click(object sender, RoutedEventArgs e)
{
    decimal totalSales = GetTotalSales(new DateTime(2023, 1, 1), new DateTime(2023, 12, 31));
    txtTotalSales.Text = $"총 매출: {totalSales}";
}

3.3. WinForms 애플리케이션 개발

WinForms에서는 Tools에서 Button과 Label 컨트롤을 추가하여 아래와 같이 구성할 수 있습니다.

// WinForms Form1.cs
private void btnGetSales_Click(object sender, EventArgs e)
{
    decimal totalSales = GetTotalSales(new DateTime(2023, 1, 1), new DateTime(2023, 12, 31));
    lblTotalSales.Text = $"총 매출: {totalSales}";
}

4. 그래프 및 차트 구현

대시보드의 중요한 요소 중 하나는 데이터 시각화입니다. WPF와 WinForms는 다양한 차트 라이브러리를 지원합니다. 예를 들어 LiveCharts를 사용하여 데이터를 시각화할 수 있습니다.

4.1. LiveCharts 설치

첫 번째 단계는 NuGet을 통해 LiveCharts 패키지를 설치하는 것입니다:

Install-Package LiveCharts.WinForms

4.2. 데이터 시각화 예제 (WPF)

XAML에서 차트 컨트롤을 추가합니다:

<lvc:CartesianChart Name="cartesianChart">
        <lvc:CartesianChart.Series>
            <lvc:LineSeries Values="{Binding TotalSales}" />
        </lvc:CartesianChart.Series>
    </lvc:CartesianChart>

차트 데이터는 ViewModel을 통해 바인딩할 수 있습니다.

4.3. 데이터 시각화 예제 (WinForms)

WinForms에서는 Chart 컨트롤을 추가하고 데이터 시리즈를 설정할 수 있습니다:

chart1.Series[0].Points.AddXY("2023-01", totalSales);

5. 결론

오라클 프로시저와 C#을 통해 대시보드 애플리케이션을 개발하는 것은 비즈니스 인사이트를 제공하는 강력한 방법입니다. 데이터 집계, UI 구현 및 데이터 시각화의 결합은 사용자가 데이터를 보다 쉽게 이해하고 분석하는 데 도움을 줍니다. 향후 이 글에서는 성능 최적화, 보안 및 데이터베이스 연결 관리 등의 추가적인 주제를 다룰 예정입니다.

참고 문헌

  • Oracle Database PL/SQL Language Reference
  • Microsoft Docs: C# Guide
  • LiveCharts Documentation