[데이터베이스] #11 응용 개발

2024. 5. 20. 10:25·전공/데이터베이스
728x90
반응형

목차

  1. 내장 SQL
  2. ODBC

 


1. 내장 SQL

1. 내장 SQL

호스트 언어 중간 중간에 SQL 문장 삽입

전처리(preprocessing) 과정을 꼭 거쳐야 함 → 이후 컴파일

EXEC SQL BEGIN DECLARE SECTION ...
EXEC SQL <embedded SQL statement>;
EXEC SQL ENC DECLARE SECTION;

선언된 변수는 프로그램에서 사용할 때 반드시 콜론(:)을 접두사 형식으로 붙임

2. 커서

두 언어 간에 자료 처리 방식 차이로 인한 불일치 해결 필요 → cursor

  1. declare: 커서 선언
  2. EXEC SQL declare myCursor cursor for select sID, name from student where totalCredit > :creditAmount;
  3. open: 질의 실행 (질의문의 결과 결정)
  4. EXEC SQL open myCursor
  5. fetch: 호스트 프로그램 변수에 터플단위로 값 전달
  6. EXEC SQL fetch myCursor into :si, :sn;
  7. close
  8. 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);
  1. environment handle 할당
  2. connection handle 할당
  3. 데이터베이스 서버와 연결
  4. 함수 수행 결과 여부를 알려주는 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);
  1. environment handle 할당
  2. connection handle 할당
  3. 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가지 구현 레벨을 정의

  1. Core
  2. Level 1 requires support for metadata quering
  3. 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
'전공/데이터베이스' 카테고리의 다른 글
  • [데이터베이스] #13 개체-관계성 데이터 모델
  • [데이터베이스] #12 SQL 확장
  • [데이터베이스] #10 오라클 실습 II
  • [데이터베이스] #9 데이터베이스 주요 기능
dev_ares
dev_ares
대학에서 컴퓨터공학을 전공하고 있는 학생입니다.
    반응형
    250x250
  • dev_ares
    노트
    dev_ares
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • IT 트랜드 (2)
      • 백엔드 (18)
        • Java + Spring (8)
        • Kotlin + Spring (5)
        • 백엔드 (5)
      • 프론트엔드 (1)
        • React (1)
      • 대외활동 (17)
        • 42서울 (17)
      • 백준 (6)
        • Java (2)
        • C++ (3)
      • 전공 (121)
        • 객체지향프로그래밍 (17)
        • 자료구조 (23)
        • 리눅스시스템관리 (16)
        • 컴퓨터구조 (25)
        • 네트워크 (25)
        • 데이터베이스 (15)
        • 기타 전공 (0)
      • 프로그래밍 언어 (18)
        • Java (5)
        • Swift (4)
        • C++ (1)
        • Kotlin (8)
      • 기타 (4)
      • 공군 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스
    단일 사이클
    추가 문제
    42서울
    메모리 계층 구조
    C++
    티스토리챌린지
    반복자
    명령어
    자료구조
    컴공 포트폴리오
    데이터패스
    자바
    컴퓨터 구조 및 설계
    컴퓨터구조
    백준
    상속
    코틀린
    오블완
    사설 문제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
dev_ares
[데이터베이스] #11 응용 개발
상단으로

티스토리툴바