카테고리 보관물: Language (Programming)

ODBC DNS-Less Paradox Connection

이 코드는 C# 에서 Paradox db 를 접근하기 위한 쿼리 함수이다.

paradox 는 오랫동안 사용되어온 파일 데이터베이스의 대표주자이고, 라이선스 또한 무료이기 때문에 많은 사랑을 받아왔다.  주로 볼랜드의 BDE 를 통해 많이 사용되어 왔다.

업무상 Paradox 데이터베이스를 다른 형태로 변환할 일이 생겨 인터넷을 뒤적거리며 조각조각 모아 맞춘 코드이다. (국내 커뮤니티에 나와 같은 고민을 한 사람들이 있었지만 코드로 답을 얻지 못하였다.)

아래 코드는 참고용이며, 결과가 DataSet 으로 나오니 알아서들 가공이 가능할 것이라 생각된다.

핵심은 ODBC DSN-Less 라는 점이며, 접속 문자열 부분에서 띄어쓰기라도 일부 틀리면 오류를 마구 토해버리기 때문에 띄어쓰기 오타에 주의하기 바란다.

다른 형식의 데이터베이스의 접속 문자열은 아래 링크를 참고하길 바란다.

http://www.codemaker.co.uk/it/tips/ado_conn.htm

또 이 코드는 접속이 되나 테스트 단계에서 작성된 코드이므로 오류처리나 그런 것들은 알아서들 붙이기 바란다.

private DataSet procDataBaseQuery(string QueryString)
{
DataSet dsResult = new DataSet();

    string connectionString = “Driver={Microsoft Paradox Driver (*.db )}; DriverID=538; Fil=Paradox 5.X; DefaultDir=c:/dpaexp/db; CollatingSequence=ASCII”;

using (OdbcConnection connection = new OdbcConnection(connectionString))
{
OdbcDataAdapter adp = new OdbcDataAdapter(QueryString, connection);

connection.Open();

adp.Fill(dsResult);

connection.Close();
}

return dsResult;
}

※ 추가내용

Microsoft Jet Database Engine 은 Paradox 를 접근할 수 있도록 되어있지만 읽기 전용이다.

또 Paradox 를 문안하게 사용하기 위해서는 는 BDE(Borland Database Engine) 을 설치해야 한다.

만약 BDE 가 설치되어있지 않을 경우 접속 문자열에 추가적인 옵션이 필요하나, BDE 설치없이 접근하는 방법은 성공하지 못했다.

BDE 가 설치되어있지 않을 경우 계속 [HY000] [Microsoft] [ODBC Paradox Driver] 어쩌고 하는 오류가 발생된다.