728x90
반응형
목차
- 내장 SQL
- ODBC
1. 내장 SQL
1. 내장 SQL
호스트 언어 중간 중간에 SQL 문장 삽입
전처리(preprocessing) 과정을 꼭 거쳐야 함 → 이후 컴파일
EXEC SQL BEGIN DECLARE SECTION ...
EXEC SQL <embedded SQL statement>;
EXEC SQL ENC DECLARE SECTION;
선언된 변수는 프로그램에서 사용할 때 반드시 콜론(:)을 접두사 형식으로 붙임
2. 커서
두 언어 간에 자료 처리 방식 차이로 인한 불일치 해결 필요 → cursor
- declare: 커서 선언
- EXEC SQL declare myCursor cursor for select sID, name from student where totalCredit > :creditAmount;
- open: 질의 실행 (질의문의 결과 결정)
- EXEC SQL open myCursor
- fetch: 호스트 프로그램 변수에 터플단위로 값 전달
- EXEC SQL fetch myCursor into :si, :sn;
- close
- EXEC SQL close myCursor
SQLSTATE
- SQL 문장을 실행하면 성공 여부 담김
- 00000 성공
- 02000 검색되는 터플 없음
갱신을 위한 커서는 마지막에 for update 명시해야함
3. 동적 SQL
prepare → execute 단계로 나뉨 (execute immediate는 동시 수행)
stcopy("select name from professor where salary > ?", myText);
EXEC SQL prepare my1 from :myText;
mySalary = 1000;
EXEC SQL execute my1 using :mySalary;
- prepare
- SQL 문장에 대한 컴파일 단계, 변수 이용 가능
- select 문장의 물음표 기호(?)는 prepare 단계에서 실제 값으로 대치되는 변수 의미
- execute
2. ODBC/JDBC
1. ODBC
API 방식
응용 프로그램은 ODBC 라이브러리와 링크하여 함께 컴파일
ODBC 2.0 연결
SQLAllocEnv(&env);
SQLAllocConnect(env, &conn);
SQLConnect(conn, "db.ssu.ac.kr", SQL_NTS, "myUserID", SQL_NTS, "myPassword", SQL_NTS);
- environment handle 할당
- connection handle 할당
- 데이터베이스 서버와 연결
- 함수 수행 결과 여부를 알려주는 error code 선언
SQL_NTS는 선행 매개변수가 null로 끝나는 스트링임을 의미
ODBC 3.0 연결
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
SQLAllocHandle(SQL_HANDLE_ENV, dbcm &stat);
- environment handle 할당
- connection handle 할당
- statement handle 할당
2. ODBC 데이터 접근
SQLExecDirect(): SQL 문장 수행
SQLBindCol(): 결과 속성 값을 로컬 변수와 연결
SQLFetch(): 터플 단위로 데이터 받기
3. ODBC 동적 SQL
SQL inhection이란 SQL 코드를 악의적으로 삽입하는 기술
사용자로부터 SQL 문장 일부를 동적으로 입력받아 수행하는 응용에서 발생
SQLstatement : = "SELECT * FROM userinfo WHERE id " + a_variable + ";"
사용자가 1;DROP TABLE users 입력할 수 있음
prepare 기능을 사용하여 SQL 문장을 미리 컴파일 하면 일정 수준 공격을 피할 수 있음
4. ODBC 레벨
ODBC는 3가지 구현 레벨을 정의
- Core
- Level 1 requires support for metadata quering
- Level 2 requires ability to send and retrieve arrays of parameter values and more detailed catalog information
728x90
반응형
'전공 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] #13 개체-관계성 데이터 모델 (0) | 2024.06.12 |
---|---|
[데이터베이스] #12 SQL 확장 (0) | 2024.05.20 |
[데이터베이스] #10 오라클 실습 II (0) | 2024.05.20 |
[데이터베이스] #9 데이터베이스 주요 기능 (0) | 2024.05.20 |
[데이터베이스] #8 SQL V (랭킹, 기타 기능) (0) | 2024.05.20 |