Access 2000-2003 데이타베이스 연결
Access 2000, Access 2002, Access 2003 에서 사용된 .mdb 파일을 사용할 경우 Microsoft Jet OLE DB 4.0 provider를 사용한다. 만약 Admin의 암호를 특별히 설정하지 않았다면, Connection String에서 [User Id=admin;Password=;] 부분을 생략할 수 있다.
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C: est.mdb;User Id=admin;Password=;"
OleDbConnection conn = new OleDbConnection(connStr);
conn.Open();
OleDbConnection conn = new OleDbConnection(connStr);
conn.Open();
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을 지원한다)
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C: est.accdb;"
OleDbConnection conn = new OleDbConnection(connStr);
conn.Open();
OleDbConnection conn = new OleDbConnection(connStr);
conn.Open();
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();
}
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];
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];