728x90
반응형
반응형

Tibero 에서 제공하는 TDP.net 테스트 방법에 대해 소개 하겠습니다. 

TDP.net 드라이버는 Tibero 에서 제공하는 .NET Data Provider로서 사용자의 .NET 애플리케이션 프로그램과 Tibero간의 SQL 인터페이스 역할을 수행합니다. 

Oracle 에서 제공하는 ODP.net 과 동일한 역할을 수행 합니다. 

 

Visual Studio .Net 환경 C# 테스트 가이드

  • 본 예제는 Visual Studio 환경에서 TDP.net 드라이버를 이용한 Tibero 연동 테스트에 대해 설명 합니다. 

 

Visual Sutudio TDP.net 프로젝트 기본 환경 설정

  • 새프로젝트 -> 템플릿 -> Visual C# -> 콘솔 응용프로그램 선택

 

Visual Sutudio C# Test 파일 생성 

  • 솔루션 탐색기 에서 마우스 우클릭 후 추가 버튼 클릭 합니다. 
  • 새항목 선택 -> C# 클래스 파일을 선택 합니다. 
  • SampleTDP.cs  파일로 생성 하겠습니다. 
  • SampleTDP.cs 파일에 메인 함수를 추가 합니다. 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace tibero_tdpnet_samples
{
    class SampleTDP
    {

        static void Main(string[] args)
        {
            try
            {
                SampleTDP sample = new SampleTDP();
                Console.WriteLine("=== TEST START ===");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.ToString());

            }
            Console.WriteLine(" == Success == ");
            Console.ReadLine();
        }
    }
}

 

 

 

 

TDP.net 라이브러리 추가 

  • 프로젝트 우측 솔루션 탐색기 선택 -> 참조 버튼 우클릭 -> 찾아 보기 에서 Tibero.DataAccess.dll 라이브러리 추가 
  • 이클립스에서 jar 파일 라이브러리를 추가하는 작업이라고 보시면 됩니다. 

 

 

 

테스트 코드 실행 

  • Visual Studio 상단 실행 버튼을 클릭합니다. 
  • 아래 처럼 에러가 발생합니다. 
오류 1 'd:\000.program\dotnet\tibero-tdpnet-samples\tibero-tdpnet-samples\obj\Debug\tibero-tdpnet-samples.exe' 프로그램에 진입점이 두 개 이상 정의되어 있습니다.

 

  • 메뉴 -> 프로젝트 -> 프로젝트 속성을 클릭 해서 실행할 클래스 파일을 선택합니다. 

  • 프로젝트 속성 변경 후 실행을 하면 콘솔창이 출력 되고 메인 함수 에서 Print 한 출력 내용이 콘솔에 뿌려 집니다. 

 

  • 실행 후 콘솔창이 종료 되지 않는 이유는 메인함수  Console.ReadLine(); 함수로 콘솔 입력을 기다리기 때문입니다. 

 

TDP.net Tibero 연동 테스트 

기본 적인 테스트 환경 설정이 끝났습니다. 

티베로와 연동하는 테스트 코드를 작성해 보겠습니다. 

티베로  테스트 table 및 프로시져 생성 

SQL> desc sampleTable;

COLUMN_NAME                              TYPE               CONSTRAINT          
---------------------------------------- ------------------ --------------------
COL1_NUMBER                              NUMBER             
COL2_VARCHAR                             VARCHAR(4000)      
create table sampleTable ( col1_number number , col2_varchar varchar(4000)); 

create or replace procedure PROC_INSERT(in_col_num in number , in_col_vchar in varchar )
is
begin
insert into sampleTable (col1_number ,col2_varchar) values (in_col_num, in_col_vchar) ;
end;
/

티베로 TDP.net 팩키지 추가

using 절에 연동에 필요한 팩키지를 추가 합니다. 

using Tibero.DataAccess.Client; // 참조 팩키지
namespace tibero_tdpnet_samples

 

티베로 연동 소스 코드

아래는 티베로와 연동하는  ExecuteSample() 함수 를 추가 하겠습니다. 

아래 함수를 샘플 클래스 소스에 추가 합니다. 

        public void ExecuteSample()
        {
            try
            {
                Console.WriteLine(" == ExecuteSample 함수 시작  == ");
                //Connect String 설정 
                string tbconnstr = "User Id=" + "tibero" + " ; Password=" + "tmax" + ";Data Source = (INSTANCE =(HOST=" + "127.0.0.1" + ")(PORT=" + 17000 + ")(DB_NAME=" + "tibero" + ")";

                //Connect 연결
                using (TiberoConnection conn = new TiberoConnection(tbconnstr))
                {
                    conn.Open();

                    TiberoCommand cmd = new TiberoCommand();
                    cmd.Connection = conn;
                    cmd.CommandText = "PROC_INSERT";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.BindByName = true;

                    //parameter Set Case1 
                    Console.WriteLine("========= data Bind Case1 ==============");
                    TiberoParameter in_col_num = new TiberoParameter();
                    in_col_num.Direction = ParameterDirection.Input;
                    in_col_num.TiberoDbType = TiberoDbType.Decimal;
                    in_col_num.ParameterName = "in_col_num";
                    in_col_num.Value = "1";
                    cmd.Parameters.Add(in_col_num);

                    TiberoParameter in_col_varchar = new TiberoParameter();
                    in_col_varchar.Direction = ParameterDirection.Input;
                    in_col_varchar.TiberoDbType = TiberoDbType.Varchar2;
                    in_col_varchar.Size = 4000;
                    in_col_varchar.ParameterName = "in_col_vchar";
                    in_col_varchar.Value = "test bind varchar case1 ";
                    cmd.Parameters.Add(in_col_varchar);


                    //Query 실행
                    cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();

                    cmd.CommandText = "SELECT COL1_NUMBER , COL2_VARCHAR FROM SAMPLETABLE";
                    cmd.CommandType = CommandType.Text;


                    TiberoDataReader dr = null;
                    dr = cmd.ExecuteReader();
                    //Tibero DataReader
                    while (dr.Read())
                    {
                        Console.Write("COL1_NUMBER  : [" + dr.GetDecimal(0) + "]");
                        Console.Write(" - ");
                        Console.WriteLine("COL2_VARCHAR : [" + dr.GetValue(1) + "]");

                    }

                    //parameter set Case2
                    Console.WriteLine("========= data Bind Case2 ==============");
                    cmd.Parameters.Add("in_col_num", TiberoDbType.Decimal).Value = 2;
                    cmd.Parameters.Add("in_col_vchar", TiberoDbType.Varchar2, 4000).Value = "test bind varchar case2";


                    cmd.CommandText = "SELECT COL1_NUMBER , COL2_VARCHAR FROM SAMPLETABLE";
                    cmd.CommandType = CommandType.Text;

                    dr = cmd.ExecuteReader();
                   
                    while (dr.Read())
                    {
                        Console.Write("COL1_NUMBER  : [" + dr.GetDecimal(0) + "]");
                        Console.Write(" - ");
                        Console.WriteLine("COL2_VARCHAR : [" + dr.GetValue(1) + "]");

                    }

                    cmd.CommandText = "delete from SAMPLETABLE";
                    cmd.CommandType = CommandType.Text;
                    cmd.ExecuteNonQuery();

                    //자원 해제
                    in_col_num.Dispose();
                    dr.Dispose();
                    conn.Close();

                    Console.WriteLine(" == ExecuteSample 함수 종료  == ");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.ToString());
                Console.ReadLine();
            }

        }

 

Main 함수 ExecuteSample 호출 

티베로와 연동하기 위해 메인함수에 sample.ExecuteSample(); 함수를 추가 합니다. 

                SampleTDP sample = new SampleTDP();
                sample.ExecuteSample();

 

테스트 실행 결과 

  • 매뉴 실행 버튼을 누르면 콘솔에 Tibero 에 입력된 데이터를 출력 합니다. 

예제 설명 

  • Tibero Conntion String 을 설정 합니다. 
string tbconnstr = "User Id=" + "tibero" + " ; Password=" + "tmax" + ";Data Source = (INSTANCE =(HOST=" + "127.0.0.1" + ")(PORT=" + 17000 + ")(DB_NAME=" + "tibero" + ")";
  • 티베로에 생성한 프로시져(PROC_INSERT)를 호출해서 데이터를 입력 할수 있도록 Connection 과 바인드 파라미터 맵핑을 설정 합니다. 
                                //Connect 연결
                using (TiberoConnection conn = new TiberoConnection(tbconnstr))
                {
                    conn.Open();

                    TiberoCommand cmd = new TiberoCommand();
                    cmd.Connection = conn;
                    cmd.CommandText = "PROC_INSERT";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.BindByName = true;

                    //parameter Set Case1 
                    Console.WriteLine("========= data Bind Case1 ==============");
                    TiberoParameter in_col_num = new TiberoParameter();
                    in_col_num.Direction = ParameterDirection.Input;
                    in_col_num.TiberoDbType = TiberoDbType.Decimal;
                    in_col_num.ParameterName = "in_col_num";
                    in_col_num.Value = "1";
                    cmd.Parameters.Add(in_col_num);

                    TiberoParameter in_col_varchar = new TiberoParameter();
                    in_col_varchar.Direction = ParameterDirection.Input;
                    in_col_varchar.TiberoDbType = TiberoDbType.Varchar2;
                    in_col_varchar.Size = 4000;
                    in_col_varchar.ParameterName = "in_col_vchar";
                    in_col_varchar.Value = "test bind varchar case1 ";
                    cmd.Parameters.Add(in_col_varchar);
  • 티베로 프로시져를 호출합니다. 
                    //Query 실행
                    cmd.ExecuteNonQuery();
  • 프로시져를 통해 입력한 데이터를 조회 합니다. 
  • JDBC 에서는 ResutlSet 으로 데이터 를 받는다면 Tdp.net 에서는 TiberoDataReader 클래스에서 데이터 출력을 처리합니다. 
                    cmd.CommandText = "SELECT COL1_NUMBER , COL2_VARCHAR FROM SAMPLETABLE";
                    cmd.CommandType = CommandType.Text;


                    TiberoDataReader dr = null;
                    dr = cmd.ExecuteReader();
                    //Tibero DataReader
                    while (dr.Read())
                    {
                        Console.Write("COL1_NUMBER  : [" + dr.GetDecimal(0) + "]");
                        Console.Write(" - ");
                        Console.WriteLine("COL2_VARCHAR : [" + dr.GetValue(1) + "]");

                    }

 

SampleTDP.cs
0.00MB

728x90
반응형

'05.DB > Tibero' 카테고리의 다른 글

Tibero TAC 설치  (0) 2023.03.13
Tibero RODBC 연동 방법  (1) 2023.03.02
Tibero JDBC Clob 조회 예제  (0) 2022.07.18
[Tibero]Tibero ODBC 연동  (0) 2022.04.11
[Tibero-Utility] UTL_SMTP 팩키지를 이용한 메일전송 프로시져  (0) 2022.04.09

+ Recent posts