안녕하세요^^
최근 아르바이트로 프로젝트를 진행하던 도중 Access Database 를 사용하게 되었는데 기존 작업은 상당히 노가다성이 강해 .Net 의 Linq 를 통해 좀더 쉽게 Database 에 접근해보고 싶어서 시작하게 되었습니다.우선 작업환경은 .Net Framework 3.5 이상이며 Microsoft Office Access 2007 을 사용하였습니다.
우선 테스트를 위해 accdb 파일이 하나 필요 합니다. 아래와 같이 필드명 및 속성을 지정해줍니다.
이렇게 accdb 파일을 하나 만들게 됩니다. (player.accdb)
이제는 프로그램을 통해 이 Database 를 가지고 놀아야 할때입니다.^^
이제 '콘솔 응용 프로그램'을 하나 생성하게 됩니다.(윈폼등 아무거나 가능)
생성후 참조 추가를 통해 .Net 탭에서 System.Data.Linq 를 추가하고 아래와 같이 추가해주면 됩니다.
using System.Data.Linq; using System.Data.Linq.Mapping; using System.Data.OleDb;
다음으로, 이번 스텁에서 중요한 부분인 클래스를 하나 추가해주는 부분입니다.
[Table(Name = "Player")] public class Players { [Column(IsPrimaryKey = true, Name = "name")] public string name { get; set; } [Column(Name = "age")] public int age { get; set; } }
Table(Name="Player") 부분에서 Name 은 실제 accdb 에서 테이블 명을 말하는것이며 각 필드의 명도 소스와 같이 정확하게 적어주면 됩니다. 이부분에서 실수가 발생하게 되면 작동이 안될 수 도 있습니다. 보통 오류가 이부분을 정화하게 정해주지 않으면 발생하는것 같습니다.
다음은 accdb 에 있는 내용을 출력해보는 소스를 작성해 보겠습니다.
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\player.accdb"); DataContext dc = new DataContext(con); Tabletst = dc.GetTable (); var result = from w in tst select w; foreach (Players stu in result) { Console.WriteLine("{0} {1}", stu.name, stu.age); }
첫줄의 Provider=Microsoft.ACE.OLEDB.12.0; 이부분은 Office 2007 을 사용하기 때문에 다음과 같이설정해주었습니다.
이제 출력까지 해보았으니 삽입을 해보겠습니다. 삽입은 더욱더 간단하더군요.
Players one = new Players(); one.name = "KOREA"; one.age = 100; tst.InsertOnSubmit(one); dc.SubmitChanges();
이상으로 LINQ 를 통하여 Access Database (accdb) 출력, 삽입을 마치겠습니다.^^
사실 하면서도 제대로 한건지 의문이 드네요ㅎ
앗!! 꼭 참고해야할 사항이 있습니다. 32비트 컴퓨터에선 모르겠지만 제가 사용하는 환경은 64비트 컴퓨터 이여서 처음에 오류때문에 고생을 했었습니다.
64비트 환경에서는 프로젝트 속성에서 플랫폼 대상을 Any CPU 에서 x86 으로 바꿔주셔야합니다.