Table of Contents | ||
---|---|---|
|
개요
...
본 문서는 WINDOWS ADO.NET환경의 Altibase 개발방법을 설명한다.
...
Note |
---|
이 문서는 정보 제공을 목적으로 제공되며, 사전에 예고 없이 변경될 수 있습니다. 이 문서는 오류가 있을 수 있으며, 상업적 또는 특정 목적에 부합하는 명시적, 묵시적인 책임이 일절 없습니다. 이 문서에 포함된 Altibase 제품의 특징이나 기능의 개발, 발표 등의 시기는 Altibase 재량입니다. Altibase는 이 문서에 대하여 관련된 특허권, 상표권, 저작권 또는 기타 지적 재산권을 보유할 수 있습니다. |
ADO.NET 설정 사항
...
본 문서는 WINDOWS ADO.NET 환경의 Altibase 응용 프로그램 개발을 위한 Altibase.Data.AltibaseClient.dll을 다운로드 받고 설치하는 방법에 관해서 설명한다.
ADO.NET 에 관한 더 자세한 내용은 "Application program Interface User's Manual" 을 참고한다.
ADO.NET
...
ADO.NET은 OLEDB, ODBC를 통해 연결되는 데이터소스뿐 아니라 XML과 같은 데이터소스에 대한 일관성 있는 접근을 제공하기 위해 고안된 방법을 의미한다.
...
뒤에 소개 할 소스 예제에서는 ALTIBASE에서 제공하는 Connection, Command, DataReader, DataAdapter등에 대한 간략한 사용 예를 설명하고 있다.
요구사항
...
Altibase ADO.NET provider 를 사용하기 위해서 필요한 환경은 아래와 같다.
- .NET Framework
Altibase 패키지에 포함된 .NET Data Provider는 .NET Framework 2.0 이상, Entity FrameWork는 .NET Framework 3.5 SP1이상에서 사용하기를 권장한다. - ADO.NET 버전에 따라서 다른 .NET Data Provider
ADO.NET 버전에 따라서 다른 라이브러리 파일을 제공하므로, 사용하려는 ADO.NET 버전에 적합한 라이브러리를 사용해야 한다 - Altibase CLI 라이브러리
Altibase .NET Data Provider는 Altibase CLI 라이브러리를 이용하여 데이타베이스 서버에 접속하므로 Altibase CLI 라이브러리를 설치해야 한다. Altibase (서버 또는 클라이언트) 패키지에 기본으로 제공된다. - DTC 시스템 서비스
분산 트랜잭션을 수행하기 위해서는 DTC 시스템 서비스가 설치되어 있어야 한다. 또한 Altibase .NET Data Provider는 XA 트랜잭션과 연동시켜 분산 트랜잭션을 수행하기 때문에 DTC 설정시 'XA 트랜잭션 사용' 옵션을 반드시 활성화시켜야 한다.
ADO.NET DDL 다운로드
...
http://support.altibase.com에 접속하여 "다운로드" --> "제품" 부분으로 이동한후 LIBRARY Section 에서 altiadonetX.X.X_32/64bit.zip 파일을 받은 후 압축을 풀면 ADO.NET DLL 이 들이있다.
...
( 본 문서의 작성 시점에는 altiadonet6.5.1.2_64/32.zip 파일이 최신으로 업로드 되어 있다 )
ADO.NET DDL 설치
...
처음 설치할 경우라면 WINDOWS CLIENT패키지를 다운로드 받아 설치하도록 한다. 설치파일에서는 별도의 복잡한 진행과정이 없어 본 문서에서는 별도로 설명하지 않는다.
...
(설치 시 %ALTIBASE_HOME%/lib 에 위치)
ADO.NET 응용프로그램 컴파일
...
Visual Studio IDE환경에서 Altibase ADO.NET Data Provider 를 사용하여 어플리케이션을 컴파일하는 과정을 설명한다.
...
- 실행 파일이 위치한 폴더에 배치하는 방법
odbccli_sl.dll 을 실행파일이 위치한 폴더와 동일에 폴더에 배치하면 실행파일의 현재 경로에서 참조한다. - 환경변수 PATH에 odbccli_si.dll 라이브러리가 위치한 경로를 추가하는 방법
환경변수 PATH 에 odbccli_sl.dll 이 위치한 경로를 추가하는 방식이다. odbccli_sl.dll 이 C:\altibase_client32\lib 에 있을 경우 아래와 같이 PATH에 추가한다.
Visual Studio 를 재실행해야 변경된 PATH 환경변수 내용을 Visual Studio 가 인식할 수 있다.
주의점
...
Visual Studio 의 컴파일 Bit 타입에 맞는 라이브러리를 사용해야 한다
...
Note |
---|
반드시 Visual Studio 의 컴파일 bit 타입에 맞는 Altibase ADO.NET library를 사용하여야 한다. Visual Studio 가 32bit 로 컴파일 되도록 설정되어 있은 경우 support.altibase.com 에서 다운로드시 "altiadonetX.X.X.X_32bit.zip" 를 받아서 사용해야 하고 64bit 컴파일 모드로 설정된 경우는 "altiadonetX.X.X.X_64bit.zip"를 받아서 사용해야 한다. 만일 Visual studio의 Bit 설정과 다른 타입의 DLL을 사용할 경우 run time 오류가 발생한다. |
준비 완료
...
위와 같이 두 파일의 설치가 끝나면 ADO.NET provider를 사용하기 위한 환경준비가 완료된다.
ADO.NET 개발 가이드
...
ADO.NET 환경에서 Altibase에 접속할 경우의 각 Class들의 예제를 설명한다. 사용된 코드는 ADO.NET환경에서 많이 사용되는 Visual C# 을 기준으로 설명한다.
AltibaseConnection
...
AltibaseConnection 은 다음과 같이 사용한다. 다음의 예제는 Altibase DB와 연결 테스트를 하는 간단한 예제이다.
...
접속정보구성항목 | 설명 |
---|---|
DSN | Altibase 서버가 위치한 물리적인 IP주소 |
UID | DB계정 명 |
PWD | DB계정의 패스워드 |
PORT | Altibase의 Listen Port번호 |
NLS_USE | 다국어 처리를 위한 문자셋 (DB생성 시 사용한 문자셋) |
AltibaseDataReader, AltibaseCommand를 이용한 날짜/시각 가져오기
...
Command와 DataReader객체를 통한 날짜/시각을 가져오는 예제이다.
Code Block | ||||
---|---|---|---|---|
| ||||
AltibaseCommand cm; AltibaseDataReader dr; try { ................ ................ cn.Open(); Console.WriteLine("정상적으로 연결됨\n"); cm = new AltibaseCommand(); cm.Connection = cn; cm.CommandText = "Select to_char(sysdate, 'yyyy-mm-dd hh:mi:ss') from dual"; dr = cm.ExecuteReader(); while (dr.Read()) { Console.WriteLine(dr.GetString(0)); } } catch (AltibaseException e) { Console.WriteLine(e.Message); } |
AltibaseDataAdaptor를 통한 INSERT
...
AltibaseDataAdaptor를 통한 INSERT예제를 설명한다.
Code Block | ||||
---|---|---|---|---|
| ||||
AltibaseConnection cn = new AltibaseConnection(connStr); AltibaseDataAdapter da = new AltibaseDataAdapter(); try { ................. cn.Open(); Console.WriteLine("정상적으로 연결됨\n"); da.InsertCommand = new AltibaseCommand("INSERT INTO T1 VALUES (?, ?)", cn); DataTable t1 = new DataTable(); DataRow r1 = null; t1.Columns.Add(new DataColumn("C1", typeof(string))); t1.Columns.Add(new DataColumn("C2", typeof(int))); da.InsertCommand.Parameters.Add(da.InsertCommand.CreateParameter()); da.InsertCommand.Parameters[0].SourceColumn = "C1"; da.InsertCommand.Parameters.Add(da.InsertCommand.CreateParameter()); da.InsertCommand.Parameters[1].SourceColumn = "C2"; r1 = t1.NewRow(); r1.ItemArray = new Object[] {"hong gi dong", 23}; t1.Rows.Add(r1); da.Update(t1); } |
AltibaseTransaction
...
AltibaseTranaction의 예제는 다음과 같다.
Code Block | ||||
---|---|---|---|---|
| ||||
AltibaseCommand cm = new AltibaseCommand(); AltibaseTransaction tx = null; try { cn.Open(); tx = cn.BeginTransaction(); cm.Connection = cn; cm.CommandText = "insert into t1 values ('viliad', 30)"; cm.ExecuteNonQuery(); tx.Commit(); } catch (AltibaseException e2) { tx.Rollback(); Console.WriteLine(e2.Message); } |
자주 발생하는 에러 메시지
...
ADO.NET 사용중 발생하는 오류와 에러 메세지에 관해서 설명한다.
System.BadImageFormatException
...
- 원인
32bit 프로그램에서 64bit dll 을 사용하는 경우 발생할 수 있다. visual studio C#은 32bit 와 64bit을 선택적으로 빌드할 수 있다.
32bit 컴파일 모드로 설정되어 있는 상태에서 odbccli_sl.dll 을 64bit 용으로 사용하는 경우 잘못된 DDL 을 로딩하면서 오류가 발생한다. 에러 메시지
Code Block theme DJango language bash 'System.BadImageFormatException' 형식의 첫째 예외가 Altibase.Data.AltibaseClient.dll에서 발생했습니다. 'System.BadImageFormatException' 형식의 첫째 예외가 Altibase.Data.AltibaseClient.dll에서 발생했습니다. 처리되지 않은 'System.BadImageFormatException' 형식의 예외가 Altibase.Data.AltibaseClient.dll에서 발생했습니다.
- 조치방법
Visual Studio 의 컴파일 Bit 타입에 맞는 Altivase ADO.NET DLL을 다운로드 받아서 사용한다.
System.DllNotFoundException
...
- 원인
Altibase 라이브러리인 odbccli_sl.dll 을 찾을 수 없을 때 발생한다. 에러 메시지
Code Block theme DJango language bash 처리되지 않은 'System.DllNotFoundException' 형식의 예외가 Altibase.Data.AltibaseClient.dll에서 발생했습니다. 추가 정보: DLL 'odbccli_sl.dll'을(를) 로드할 수 없습니다. 지정된 모듈을 찾을 수 없습니다. (예외가 발생한 HRESULT: 0x8007007E)
- 조치 방법
프로그램 실행파일이 있는 위치에 odbccli_sl.dll 을 복사하거나 PATH 환경변수에 odbccli_sl.dll 의 경로를 추가한다.
...