2016년 9월 19일 월요일

C# WinForm : Access 파일 생성

일반적으로 Access 프로그램에서 파일을 사용 할때는 미리 파일을 생성해서 쓰는게 일반적이지만, 프로그램이 실행될때 디비를 초기화를 한다던가, 디비를 동적으로 생성하여 여러개로 나누어서 관리한다던가 등의 이유로 프로그램에서 직접 Access 파일을 생성하는 경우도 있다.


일단 참조를 하나 추가 해야 한다.


여기서 "Microsoft ADO Ext. **** for DDL and Security" 를 추가해 준다.
2.8 과 6.0 이 있는데 어느걸 참조해줘도 별 상관은 없다.




6.0 이 win7 sp1 이후 버전에서 사용되는 것으로 알고 있는데, 호환성이 중요하다면 2.8 을 설치 하는게 좋겠지만, 아마 어느걸 써도 별 문제는 없을 것이다.


하여간 저거 추가 하면 참조에 "ADOX" 라는게 추가됨.


폼에다 버튼 하나 등록해 주고, 그 버튼의 클릭 이벤트에 파일 생성 구문을 기록한다.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using ADOX;

namespace MyNov
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            String strDBCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\MyProg\\MyNov\\Prog\\MyNov\\MyNov\\bin\\Debug\\MyTest.mdb;Jet OLEDB:Database Password=1234";

            ADOX.CatalogClass adoxCC = new ADOX.CatalogClass();
            adoxCC.Create(strDBCon);

            adoxCC.ActiveConnection = null;
            adoxCC = null;

            GC.Collect();
        }
    }
}


물론, using 항목에 "ADOX" 를 등록해 주어야 한다.
그런데 이렇게 하면...


이런 에러가 뜰터인데... 이건 이걸 참조해 보면된다.

"Interop 형식 '~~~'을(를) 포함할 수 없습니다. 응용 가능한 인터페이스를 대신 사용하십시오. " 오류 발생.

위의 참조에 따라...


"ADOX" 의 "Interop 형식 포함" 을 "False" 로 지정하면 오류가 나지 않는다.

이 상태에서 프로그램을 실행하고 버튼을 클릭한후 Data Source 로 지정한 경로에 가보면...


이렇게 Access 파일이 생성된 것을 볼 수 있다.

여기에다 테이블을 생성할려면 아래를 참조

C# WinForm : Access 파일에 테이블 생성하기.