* Powerbuilder 10.5


대부분의 DBMS 에서 접속하기 위해서 DBMS에 전달해야 하는 내용은 다음과 같습니다.

1. Server
  Server는 ServerName, Database, Host 등의 문자열로 다르게 표현되기도 합니다. 
  표현만 다를 뿐이지 다 같은 말입니다. Server에는 보통 IP 주소를 입력합니다.  
  Server 정보는 DBMS 서버의 위치입니다. 거기로 접속 정보를 보내겠다는 뜻이죠.

  오라클은 클라이언트단에서 서버에 접속하기 위한 IP 주소를 Tnsnames.ora 에서 관리합니다.
  그래서 Tnsnames.ora 의 네트서비스이름(여기서는 testdb_local)을 입력합니다.

2. 사용자 ID
    여기서는 scott 입니다.

3. Password
    여기서는 tiger 입니다.

4. Database 이름
   MS SQL Server, MySQL 은 Database 이름을 입력할 수 있는 옵션이 있지만 오라클에 접속할 때는 필요가 없습니다.
   오라클에서는 Tnsnames.ora의 SID로 Database 를 구분하기 때문입니다.


이제부터 본격적으로 파워빌더로 DB 연동하는 방법을 알아보겠습니다.

파워빌더는 DBMS 와 접속하기 위해서 Transaction object 를 사용합니다.

파워빌더를 실행한 뒤 F1 을 눌러서 도움말을 오픈하세요.
그리고 색인탭의 검색창에 Transaction object: definition 을 입력하고 그 결과를 확인합니다.


The communications area for a database connection that facilitates communication between a script and the database. It stores status information for recent database activity. The default Transaction object in PowerBuilder is SQLCA (SQL Communications Area).

스크립트와 데이터베이스 사이의 통신을 구축하는 데이터베이스 연결에 필요한 통신영역이다. 최근의 데이터베이스 연동에 대한 상태 정보를 저장하고 있다. 파워빌더에서 기본 Transaction object 는 SQLCA(SQL 통신영역)이다.

파워빌더 내장함수처럼 파워빌더에서는 기본 Transaction object 인 SQLCA 를 제공합니다.


도움말에서 Transaction object 로 다시 검색한 후 Transaction object 항목을 선택합니다.
그리고 상단의 Properties 버튼을 클릭합니다.


 

 

 

Transaction Object 의 속성들입니다.

그리고

메뉴 - Tools - Database Profile...
또는
상단 아이콘메뉴 - DB Profile
에서
Database Profiles 창을 오픈합니다.

 

 

 

>>오라클10g native

O10 Oracle 10g - MyTestDB 선택 - Edit... 버튼 클릭

 

>>오라클 ODBC

ODB ODBC - TestDB11 선택 - Edit... 버튼 클릭

 


Database Profile Setup 창이 열립니다.

Preview 탭을 선택하면 Database Connection Syntax 가 있습니다.
Connection 탭에 입력했던 내용을 스크립트 형태로 보여줍니다.

 


>>오라클10g native
// Profile MyTestDB
SQLCA.DBMS = "O10 Oracle10g (10.1.0)"
SQLCA.LogPass = <*****>
SQLCA.ServerName = "testdb_local"
SQLCA.LogId = "scott"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PBCatalogOwner='scott'"

 

>>오라클 ODBC

// Profile TestDB11
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=TestDB_odbc;UID=scott;PWD=tiger',PBCatalogOwner='scott'"


SQLCA.LogPass = <****> 라고 해 놓은 것은 비밀번호 보안 때문입니다.
실제 사용시에는 비밀번호를 명시해 줘야 합니다.

이 스크립트를 잘 보시면 Transaction Object 의 속성에 DBMS 연결 정보를 저장했음을 알 수 있습니다.
결국 SQLCA 라는 Transaction Object 의 속성에 DBMS 연결 정보를 저장한거네요.
Transaction Object 는 DB 연동시 항상 사용되기 때문에 파빌에서는 미리 SQLCA라는 디폴트 Object를 만들어 둔 것입니다.

DBMS : DBMS 종류와 버전
LogPass : 사용자 비밀번호
ServerName : 오라클에서는 네트서비스이름
LogId : 사용자 ID
AutoCommit : DB 쿼리 실행 후 자동 커밋 여부
DBParm : 기타 매개변수


(AutoCommit 에 대해서 이해하려면 먼저 Transaction 에 대해서 공부하세요.)

그 밖에

SQLCode : DB 쿼리 실행 후의 결과
SQLErrText : DB 에러 메시지

등이 주로 사용됩니다.

 

 

 


test 어플리케이션을 오픈하세요.
그리고 Open 이벤트의 open(w_list) 위에
Database Connection Syntax 를 복사해서 넣으십시오.

 

 

 

>>오라클10g native

 



물론 SQLCA.LogPass 부분은 "tiger" 로 수정합니다.

 

 

 

>>오라클 ODBC

 

   

 


이렇게만 하면 DBMS에 접속할 수 없습니다.
SQLCA 에 DBMS에 접속할 수 있는 정보만 담았을 뿐입니다.


 

open(w_list)  바로 위에 아래처럼 스크립트를 작성하세요.

 

 

 

 

드디어 다소 복잡한 스크립트가 나왔습니다. 이제부터는 정신 바짝 차리세요.

하나 하나 실전에 쓰이는 코드입니다.

먼저, 파워스크립트는 대소문자를 구분하지 않습니다.
그래도 대문자를 적절히 써줘야 코드 가독성을 높일 수 있겠죠?



Connect Using SQLCA;
요거는 파워빌더 내장 SQL 입니다.
내장 SQL로 스크립트 상에서 쿼리를 실행할 수 있습니다.
중요하므로 반드시 익히세요.

Connect Using SQLCA;는 SQLCA를 사용하여 DB에 접속하라는 명령입니다.
이 때 Using SQLCA 는 생략가능합니다. 즉, Connect; 라 해도 됩니다. 이는 SQLCA에만 해당합니다.

파워스크립트는 구문 끝에 세미콜론(;) 을 사용하지 않습니다.
단, 내장 SQL 은 구문 끝에 세미콜론을 사용해야 합니다.


SQLCA.sqlcode 는 성공시 0, 에러시 -1 값을 리턴합니다.
그러므로 이 속성으로 쿼리 실행의 결과를 알 수 있습니다.

if 문을 사용했는데요. 문법은 다른 언어의 문법과 유사하지만 확실히 틀립니다.
세미콜론부터 쓰지 않네요.

if 조건 then 
  명령문
end if

이 외에도 자주 쓰는 구문은 그리 많지 않습니다. 실습하면서 하나 하나 알아나가면 됩니다.

messagebox : 메시지 박스를 띄울 때 사용합니다.
문법 :  messagbox(title, text)
title : 메시지박스 상단의 타이틀 바에 표시되는 내용입니다.
text : 메시지박스 가운데에 표시되는 내용입니다.

halt : 어플리케이션을 강제로 종료시킵니다.


DB 접속에러가 발생하면 메시지박스를 보여주고 어플리케이션을 강제로 종료시켜라
는 뜻입니다.

이제 실행해 보세요. (ctrl + R)

메시지박스가 보이지 않고 w_list 윈도우가 열렸다면 성공입니다.

connect 가 성공했으면 이제부터 SQLCA를 사용하여 DB와 연동할 수 있습니다.


오늘은 여기까지입니다. 매우 중요한 내용이니 꼭 익히세요.

앞으로는 데이터윈도우를 만들어서 데이터윈도우 컨트롤에 연결하고,
SQLCA로 DB의 자료를 조회해서 데이터윈도우 컨트롤에 보여주는 내용을 다루겠습니다.

수고하셨습니다.


* 질문은 댓글을 이용하세요.

 

 

 

Posted by A4M
,