안녕하세요 마블랑입니다.
지난번에 C#으로 구현한 프로그램이 ODBC 등록없이 Mysql 데이터베이스에 접근하는 것을 포스팅하였습니다.
이번 포스팅은 C# 에서 OdbcConnection 클래스를 이용해 ODBC에 등록된 데이터 베이스에 접근해보도록 하겠습니다.
테스트를 위해 먼저 MS Access 데이터베이스를 만들고 생성하였니다.
Purchase 라는 테이블을 만들고 그안에 간단한 데이터를 넣어두었습니다.
MS Access DB를 생성하였으니 ODBC를 등록해보겠습니다.
ODBC 창에들어가서 추가를 눌러 드라이버를 선택하여 줍니다.
드라이버는
Microsoft Access Driver (*.mdb, *.accdb)
를 선택하여 주면 됩니다.
드라이버를 선택하면 접속 정보를 설정할수 있는데요. 이 접속정보창은 데이터베이스에 따라 다르게 표시됩니다.
MS Access의 접속정보는 다음과 같이 표시됩니다.
ODBC DSN (데이터 원본 이름)와 설명 등 추가해주시고 하단에 데이터베이스 그룹박스에 선택을 눌러 이전에 생성한 MS Access 파일을 선택하여 줍니다.
이 단계가 모두 완료되면 확인을 눌러 저장을 해주세요 ^^
이제 접속 정보 셋팅 등 완료하였으니 코드를 구현해 봅니다.
사용된 클래스는 OdbcConnection (ODBC 접속), OdbcCommand (ODBC 쿼리문 실행), OdbcDataReader (데이터 불러오기) 입니다.
결과를 실행하여 보겠습니다. ^^
MS Access에 저장한 데이터가 구현한대로 불러와졌습니다.
Console.WriteLine("Access 조회 시작\n");
OdbcConnection m_OdbcConnection;
try
{
m_OdbcConnection = new OdbcConnection();
m_OdbcConnection.ConnectionString = "dsn=Csharp_test";
m_OdbcConnection.Open();
OdbcCommand command = new OdbcCommand("select * from purchase;", m_OdbcConnection);
OdbcDataReader dr = command.ExecuteReader();
while (dr.Read())
{
int i = 0;
while (i < dr.FieldCount)
{
Console.Write (dr.GetValue(i).ToString()+"\t");
i++;
}
Console.WriteLine("");
}
dr.Close();
m_OdbcConnection.Close();
}
catch (OdbcException e)
{
Console.WriteLine(e.ToString());
}
Console.WriteLine("\nAccess 조회 완료\n");
OOdbcConnection 클래스의 접속정보를 보면 아래와 같이 dsn 하나만 주었습니다.
m_OdbcConnection.ConnectionString = "dsn=Csharp_test" ;
하지만 데이터베이스마다 유저가 있고 비밀번호를 입력해야하는 경우가 있으면
m_DBConnection.ConnectionString = "Dsn=Csharp_test;Uid=tester;Pwd=tester;";
다음과 같이 id 와 pw를 추가하여 주세요~
각 항목사이에는 ; (세미콜론)으로 구분하여 주시기 바랍니다.
이상 마블랑이었습니다.
읽어주셔서 고맙습니다.
'개발 이야기 > C# 이야기' 카테고리의 다른 글
C# Listview 컬럼형식으로 사용하기(Listview 선택) (2) | 2019.06.20 |
---|---|
C# DateTimePicker to String, String to DateTimePicker (0) | 2019.06.19 |
C# MySqlConnection 사용하여 Mysql 접속하기 (ODBC를 등록하지 않고 DB 사용, MySqlCommand, MySqlDataReader, MySqlCommand) (0) | 2019.06.18 |
C# 객체 생성 함수 사용 (Class, static) (0) | 2019.06.18 |
C# Mysql blob NULL 판단하기 (blob 에러처리) (0) | 2019.06.17 |
댓글