본문 바로가기

C# WPF

[C# WPF] 데이터베이스 만들기(ACCESS)

C# 프로그램으로 Access 데이터베이스를 만들어보겠습니다.

먼저 프로그램의 실행화면을 보면 다음과 같습니다.

왼쪽의 창이 먼저 나타나고, 텍스트 상자에 파일 이름을 쓰고, [만들기] 버튼을 누르면, DB가 만들어집니다. 성공적으로 만들어지면 MessageBox로 성공을 알립니다.

 

 

만들고자하는 DB는 Student 테이블 하나를 갖습니다. 이 테이블에는 ID, NAME, PHONE의 3개 필드가 있습니다. 각각의 데이터 형식은 text 이며, 길이는 8, 10, 16으로 주었습니다. 길이를 주지 않으면 255로 잡혀서 필요없이 공간을 차지하게 됩니다. 성공적으로 만들어지면 아래 그림과 같은 Access 파일이 생깁니다.

그럼 프로그램을 시작해보지요.

먼저 XAML 파일은 다음과 같습니다.

<Window x:Class="AccessDBMake.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Width="220" Height="160">
    <Grid>       
        <TextBlock HorizontalAlignment="Left" Margin="24,19,0,0" TextWrapping="Wrap" Text="생성할 Access DB의 이름은?" VerticalAlignment="Top"/>
        <TextBox Name="txtDB" HorizontalAlignment="Left" Height="23" Margin="24,49,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="154"/>
        <Button Content="만들기" HorizontalAlignment="Left" Margin="24,86,0,0" VerticalAlignment="Top" Width="75" Click="btnMake_Click"/>
        <Button Content="Quit" HorizontalAlignment="Left" Margin="105,86,0,0" VerticalAlignment="Top" Width="75" Click="btnQuit_Click" />
    </Grid>
</Window>

주의할 점은 DB 파일을 만들때에는 참조에 ADOX를 추가해야 합니다. CS 파일에서 프로그램을 하기 전에 솔루션 탐색기에서 "참조"에서 오른쪽 마우스 버튼을 누르고 "참조추가"를 선택합니다. 나타나는  참조관리자에서 창에서 COM을 선택하고 Microsoft ADO Ext6.0 for DDL and Security를 선택한 후, "확인"을 누릅니다. 그러면 아래 그림과 같이 ADOX가 참조에 포함됩니다. ADOX는 DB 파일을 만들 때 필요한 Catalog 클래스를 정의하고 있습니다. 소스 프로그램에서,

using ADOX;

를 꼭 추가해야 합니다.

 

전체 소스 파일은 다음과 같습니다.

using System;
using System.Windows;
using System.Data.OleDb;
using ADOX;

namespace AccessDBMake
{
    /// <summary>
    /// MainWindow.xaml에 대한 상호 작용 논리
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            txtDB.Focus();
        }

        private void btnMake_Click(object sender, RoutedEventArgs e)
        {
            if (txtDB.Text == "")
                return;

            // DB 파일이름으로 .accdb 만들기
            Catalog myCatalog = new Catalog();
            string strProvider = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=../../../DBFiles/"
                                    + txtDB.Text.ToString() + ".accdb";
            try
            {
                myCatalog.Create(strProvider);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Make AccessDB Error");
            }
           
            // 만들어진 DB 파일 연결하기
            string connStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" +
                    "../../../DBFiles/" + txtDB.Text.ToString() + ".accdb; Persist Security Info=False";

            OleDbConnection conn = new OleDbConnection(connStr);
            conn.Open();

            // DB에 Student Table 만들기
            // Student Table은 ID, NAME, PHONE의 3개 text 필드를 갖는다
            string sql = "CREATE TABLE Student(ID text(8) NOT NULL, NAME text(10) NOT NULL, PHONE text(16) )";
            OleDbCommand comm = new OleDbCommand(sql, conn);

            try
            {
                int x = comm.ExecuteNonQuery();
                if (x == 0)
                    MessageBox.Show("정상적으로 Student Table이 생성되었습니다");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "MakeTable");
            }
             conn.Close();
        }

        private void btnQuit_Click(object sender, RoutedEventArgs e)
        {
            Close();
        }
    }
}

 

프로그램은 "만들기" 버튼이 클릭되었을 때 호출되는 btnMake_Click() 메소드와 "Quit" 버튼이 클릭되었을 떄 호출되는 btnQuit_Click() 로 구성됩니다.

btnMake_Click() 함수는 DB 파일 만들기, DB 파일 연결하고 Student 테이블 만들기, 성공했으면 메시지박스에 "정상적으로 Student Table이 생성되었습니다"라고 표시하고, 마지막으로 연결을 닫습니다.

 

BeeEye Dmu