C#
Access 2000-2003 데이타베이스 연결

Access 2000, Access 2002, Access 2003 에서 사용된 .mdb 파일을 사용할 경우 Microsoft Jet OLE DB 4.0 provider를 사용한다. 만약 Admin의 암호를 특별히 설정하지 않았다면, Connection String에서 [User Id=admin;Password=;] 부분을 생략할 수 있다.




Access 2007 이상에서 데이타베이스 연결

Access 2007 버전 이상 (예: Access 2007, 2010, 2013, 2016 등) 에서 사용되는 .accdb 파일을 사용할 경우 Microsoft ACE OLEDB 12.0 provider를 사용한다. (주: Access 버전이 올라감에 따라 더 향상된 Microsoft ACE OLEDB Provider가 지원되는데, Access 2007 버전 이상에서 공통적으로 Microsoft ACE OLEDB 12.0 provider을 지원한다)




ADO.NET의 사용 : 테이블 생성과 데이타 추가 예제

엑세스 DB를 OleDbConnection을 사용해 연결을 한 후에는, 다른 데이타 소스들과 같이 OleDb* 클래스들을 이용해 데이타를 가져오거나 삽입, 삭제, 갱신등을 하게 된다. 아래 예제는 테이블을 만들고 데이타를 한 개 추가하는 예이다.

예제

string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test.accdb";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
    conn.Open();

    string sql = "CREATE TABLE MyTable (ID int, Name nvarchar(100))";
    OleDbCommand cmd = new OleDbCommand(sql, conn);
    cmd.ExecuteNonQuery();

    sql = "INSERT INTO MyTable VALUES(1,'Lee')";
    cmd.CommandText = sql;
    cmd.ExecuteNonQuery();
}





ADO.NET의 사용 : 데이타 읽기 및 바인딩

엑세스의 데이타를 가져오기 위해서는 OleDbCommand/OleDbDataReader 혹은 OleDbDataAdapter를 사용한다. OleDbDataReader는 데이타를 한 Row씩 가져오는 반면, OleDbDataAdapter는 한꺼번에 클라이언트 메모리로 데이타를 가져온다. OleDbDataAdapter에서 가져온 데이타는 주로 DataSet 객체 안에 메모리상의 테이블 형태로 존재하는데, 이를 각종 컨트롤들에게 바인딩시킬 수 있다. 예를 들어, 윈폼의 DataGridView 컨트롤, ASP.NET의 GridView 컨트롤, WPF의 DataGrid 컨트롤 등의 그리드 컨트롤에 바인딩시키면, 메모리상의 데이타를 테이블 형태로 표시할 수 있다.

예제

// Fill 전달 전에 DataSet객체 생성
DataSet ds = new DataSet();

// DataAdapter는 자동으로 Connection을
// 핸들링한다. conn.Open() 불필요.
string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test.accdb";
OleDbConnection conn = new OleDbConnection(connStr);

string sql = "SELECT * FROM MyTable";
OleDbDataAdapter adp = new OleDbDataAdapter(sql, conn);
adp.Fill(ds);

// 가져온 데이타를 DataGridView 컨트롤에 
// 바인딩한 예.
dataGridView1.DataSource = ds.Tables[0];




본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.




Comment toddufs@*** 11/7/2012 5:48:58 AM
Alex Lee가 좋아합니다
Comment hid2en@*** 6/27/2016 8:43:06 AM
Comment admin@*** 6/27/2016 10:20:55 PM
Comment schoani@*** 12/21/2018 6:09:35 AM
Comment pg131313@*** 3/17/2020 11:53:37 PM
Alex Lee가 좋아합니다