connect()
sqlLib.connect() 시스템 함수는 런타임에 데이터베이스에 대한 이름 지정된 연결을 작성하고 해당 연결을 활성으로 만듭니다.
각 실행 단위에는 단일 현재 연결이 있습니다. 기본적으로 연결에는 사용자가 데이터베이스에 대해 지정한 이름이 있습니다. sqlLib.defineDatabaseAlias() 함수를 사용하여 이름을 변경할 수 있습니다.
sqlLib.connect() 함수는 워크벤치에서 새 연결 마법사를 통해 작성하는 기본 SQL 연결을 대체합니다. 이 마법사에 대한 자세한 정보는 EGL 프로그래머 안내서에서 SQL 데이터베이스 연결 작성의 내용을 참조하십시오. VisualAge® Generator 또는 EGL 버전 5로부터 코드를 마이그레이션하는 경우에는 connectionService()의 내용을 참조하십시오.
sqlLib.connect() 함수는 값을 리턴하지 않지만 sqlLib.sqlData에 시스템 변수를 설정합니다. sqlLib.sqlData(EGL 시스템 변수)을 참조하십시오.
구문
sqlLib.connect(
database STRING in,
userID STRING in,
password STRING in
[, disconnectOption DisconnectKind in
[, isolationLevel IsolationLevelKind in
[, commitControl CommitControlKind in]]]] )
- database
- 데이터베이스 문자열에는 다음 값 중 하나가 있을 수 있습니다.
- "RESET"
- 데이터베이스 연결이 원래 상태로 돌아갑니다. 이 명령의 정확한 의미는 사용자의 환경, 데이터베이스 관리 소프트웨어 및 기타 요소에 따라 다릅니다. 자세한 정보는 EGL 프로그래머 안내서에서 SQL 데이터베이스 연결 작성의 내용을 참조하십시오.
- databaseName
- 데이터베이스의 이름입니다. 이 이름은 사용자의 환경, 데이터베이스 관리 소프트웨어 및 기타 요소에 따라 다릅니다. 자세한 정보는 EGL 프로그래머 안내서에서 SQL 데이터베이스 연결 작성의 내용을 참조하십시오.
- 사용자의 코드가 Java™ 프로그램으로 실행되는 경우 다음 명령문이 적용됩니다.
- vgj.jdbc.database.server 특성을 검색하여 실제 데이터베이스 이름을 찾을 수 있습니다. 여기서 server는 vgLib.connectionService() 호출에 지정된 서버의 이름입니다. 이 특성이 정의되지 않은 경우, vgLib.connectionService() 호출에 지정된 서버 이름이 그대로 사용됩니다.
- 데이터베이스 이름의 형식은 J2EE 연결과 비J2EE 연결에서 다릅니다.
- J2EE 환경을 위한 프로그램을 생성한 경우, JNDI 레지스트리에서 데이터 소스가 바인드된 이름을 사용하십시오(예: jdbc/MyDB). 이 상황은 J2EE 빌드 디스크립터 옵션이 YES로 설정된 경우에 발생합니다.
- 비J2EE 환경을 위한 프로그램을 생성한 경우, 연결 URL을 사용하십시오(예: jdbc:db2:MyDB). 이 상황은 J2EE가 NO로 설정된 경우에 발생합니다.
- userID
- 데이터베이스에 액세스하는 데 사용되는 사용자 ID입니다. 인수가 필요하지만 COBOL 생성 시에는 무시됩니다. 이 주제에 대한 "호환성" 절을 참조하십시오.
- password
- 데이터베이스에 액세스하는 데 사용되는 비밀번호입니다. 인수가 필요하지만
COBOL 생성 시에는 무시됩니다.
이 비밀번호는 문자열 리터럴을 함수로 전달하는 경우 자동으로 암호화됩니다. 자세한 정보는 EGL 프로그래머 안내서에서 비밀번호 암호화의 내용을 참조하십시오. 이 주제의 "호환성" 절도 참조하십시오.
- disconnectOption
- 이 매개변수는 Java 생성의 경우에만 의미가 있습니다. 값은 일람표이며,
다음 키워드 중 하나여야 합니다(따옴표 또는 변수를 사용하지 마십시오).
- explicit(기본값)
- 프로그램이 sysLib.commit() 또는 sysLib.rollback()을
호출한 후 연결은 활성인 채로 남아 있습니다. 연결 자원을 해제하려면 프로그램이 sqlLib.disconnect()를
실행해야 합니다.
type1을 commitScope의 값으로 사용하는 경우, disconnectOption 매개변수의 값은 explicit로 설정되거나 기본값으로 지정되도록 허용되어야 합니다.
- automatic
- 커미트 또는 롤백이 기존 연결을 종료합니다.
- conditional
- 커서가 열려 있고 hold 옵션이 해당 커서에 대해 영향을 미치는 경우 외에는 커미트 또는 롤백이 기존 연결을 자동으로 종료합니다. hold 옵션에 대한 정보는 SQL에 대한 open 고려사항의 내용을 참조하십시오.
- isolationLevel
- 데이터베이스 트랜잭션 간의 독립성 레벨을 표시합니다. 이 매개변수는 Java 생성의 경우에만 의미가 있습니다. 이 특성의 값은
IsolationLevelKind 일람표에서 가져옵니다.
- default
- VisualAge Generator 호환성 모드에서 실행 중인 경우에는 vgVar.sqlIsolationLevel의 값을 사용하고 그렇지 않은 경우에는 JDBC 드라이버의 기본 격리 레벨을 사용합니다(sqlIsolationLevel 참조). 드라이버 공급업체는 일반적으로 repeatableRead를 사용하지만 해당 문서에서 확인해보시기 바립니다. 이는 이 매개변수를 지정하지 않는 경우와 동일한 동작입니다.
- readUncommitted
- 가장 관대한 격리 레벨입니다. 즉, 프로그램은 더 빠르지만 데이터베이스의 실제 상태를 발견하지 못할 수 있습니다.
- readCommitted
- 덜 관대한 격리 레벨을 사용합니다.
- repeatableRead
- 더 엄격한 격리 레벨을 사용합니다.
- serializableTransaction
- 가장 엄격한 격리 레벨을 사용합니다. 즉, 프로그램은 더 느리지만 동시에 실행 중인 다른 프로그램의 변경사항을 발견합니다.
자세한 정보는 Oracle의 JDBC 문서를 참조하십시오.
- commitControl
- 데이터베이스를 변경할 때마다 커미트가 발생하는지 여부를 지정합니다.
EGL이 생성한 COBOL 코드에서는 무시됩니다. 올바른 값은 다음과 같습니다.
- noAutoCommit(기본값): 커미트는 자동이 아니며, 따라서 일반적으로 프로그램 실행이 더 빨라집니다. 이 경우 커미트 및 롤백의 규칙에 대한 정보는 논리적 작업 단위의 내용을 참조하십시오.
- autoCommit: 업데이트를 즉시 적용합니다.
임시로 autoCommit에서 noAutoCommit로 전환할 수 있습니다. 자세한 정보는 beginDatabaseTransaction()의 내용을 참조하십시오.
예제
다음은 sqlLib.connect() 함수의 예제입니다.
sqlLib.connect(myDatabase, myUserid, myPassword);
호환성
| 플랫폼 | 문제 |
|---|---|
| COBOL 생성 | database를 제외한 모든 sqlLib.connect() 매개변수는 무시됩니다. |
| Java 생성 | Tomcat J2EE 서버는 sqlLib.connect() 함수의 userID 및 password를 무시하고 서버 구성의 값을 사용합니다. |
| J2EE | JNDI 이름에 대해 정의된 데이터 소스와 연관된 사용자 ID 및 비밀번호의 기본값을 지정하려면 userID 및 password에 대해 공백 또는 빈 문자열("")을 사용하십시오. |