C# 에서 DLL 을 사용하기 위해 배열을 넘기거나 받는 경우가 있습니다.

C# 에서는 C 와 같이 *(Pointer), &(Address) 연산자를 지원하지 않는데...

대신 ref 라는 형태로 지원하고 있습니다.

void TempTest(ref byte Data);  라는 함수가 있고 ref 를 통해 Byte 배열의 데이터를 준다고 가정합니다.

byte[] TestByte[100];

라고 선언하고, C 나 C++ 에서 쓰듯이

TempTest(ref TestByte); 라고 호출하면 바로 Error 가 납니다.

자!  그럼 이렇게 써보도록 하지요.

TempTest(ref TestByte[0]);

이렇게 사용하면 컴파일이 Pass 되고 정상적으로 데이터를 받을 수 있습니다.

C 나 C++ 에 익숙하신 분들은 위 구문이 &TestByte[0] 를 뜻한다고 이해하시면 됩니다.


이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/06/20 02:04 2009/06/20 02:04
Posted by TylorSTYLE™

이 코드는 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] 어쩌고 하는 오류가 발생된다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/03/27 13:43 2008/03/27 13:43
Posted by TylorSTYLE™

BLOG main image

카테고리

전체 (144)
Freeware (3)
Embedded (27)
신변잡기 (51)
디지털 회로 (2)
Programming (20)
무선 네트워크 (15)
Computer (18)
사용기 (7)

글 보관함

262

181

-35 days

today : 184

Daum 블로거뉴스
믹시