ODBC (Open DataBaseConnectivity)

Slides:



Advertisements
Similar presentations
CUBRID 소개 (Object 개념) 서비스 사업부 / 기술지원팀. 목차 구조 일반적 특징 객체지향 특징 ORDB 개념을 이용한 스키마 ORDB 개념을 이용한 질의.
Advertisements

1 SQL 정보보호학과 양 계 탁. 2 SQL 개요 SQL 개요 3 Database u 연관된 데이터들의 집합 u 데이터를 쉽게 관리하는 프로그램 종 류종 류 관계형 데이터베이스 객체지향형 데이터베이스 계층형 데이터베이스 네트워크 데이터베이스 데이터를 2 차원적인 테.
03 변수와 자료형 세종대학교 최옥경 교수 참고 : 한빛미디어 뇌를 자극하는 C, INFINITY Perfect C.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
11 주차 : Structures and Unions. 2 Introduction structure 는 다른 타입들의 변수를 모은 타입이며 그 타입들을 structure 의 멤버 라 한다. union 은 다른 타입의 여러 변수들을 하나 의 기억 장소에 보관함으로써 한.
Vision System Lab, Sang-Hun Han
제 11 장 구조체.
소리가 작으면 이어폰 사용 권장!.
PL/SQL.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express Slide 1 (of 25)
C#에서 데이터베이스 연동 방법.
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
효과적인 DB암호화 구축을 위한 애슬론 v1.5 제안
Part 12 구조체와 공용체 ©우균, 창병모 ©우균, 창병모.
JDBC 프로그래밍 이수지 이동주 1.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
10장. 데이터베이스 보안과 권한 관리 데이터베이스 보안과 권한 관리
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
데이터베이스 와 JDBC 1.데이터베이스와 데이터베이스 관리 시스템은? 2.데이터베이스 장점?
Chapter 01 데이터베이스 시스템.
구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef
11장. 데이터베이스 서버 구축과 운영.
기초 T-SQL.
Chapter 05 데이터베이스 프로그래밍.
9. 데이터베이스 9.5 SQL을 사용하는 프로그램 9.6 데이터폼 작성기를 사용하는 프로그램
4.2 SQL 개요 SQL 개요 SQL은 IBM 연구소에서 1974년에 System R이라는 관계 DBMS 시제품을 연구할 때 관계 대수와 관계 해석을 기반으로, 집단 함수, 그룹화, 갱신 연산 등을 추가하여 개발된 언어 1986년에 ANSI(미국 표준 기구)에서 SQL.
ASP를 이용한 전자상거래 사이트 구축 지도교수님: 이형원 컴퓨터응용과학부 박정선.
16장. 테이블의 변경 새로운 행 삽입 테이블에서 테이블로 행을 복사 행 값의 변경 테이블에서 행 삭제
제 2 장 변수와 상수.
제 3 장 상수와 변수
주)INVENTORNICS 노창배 소프트웨어 김 경 순
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
데이터 타입 데이터 타입.
Derived Types-- Enumerated, Structure and Union
23강 API - II - 약방의 감초 Random 클래스 - Scanner 및 Sysout - Wrapper 클래스의 이해
상용 DBMS에서 사용하는 다차원색인 컴퓨터과학과 이돈규 상용 DBMS에서의 다차원색인.
CHAPTER 06. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
제 9장: 파일과 데이터베이스 데이터 구성에서부터 데이터 채굴 까지.
제 9장: 파일과 데이터베이스 데이터 구성에서부터 데이터 채굴 까지.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Database Programing 이름 : 김 수 종 학번 :
JSP 게시판 구현.
데이터베이스 (Database) SQL 추가 기능: 주장, 뷰, 프로그래밍 기법 문양세 강원대학교 IT대학 컴퓨터과학전공.
Database 중고차 매매 DB 비즈니스IT 윤동섭.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
3장. SQL Server 2008전체 운영 실습 및 DB와 프로그램의 연동
기본적인 SELECT문 작성.
Chapter 04 자료 유형.
ODBC &DAO 안명상.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Chapter 04. 데이터의 표현과 연산(Ⅱ).
Chapter 05. 입출력 함수.
제 3장 데이터형과 연산자 Hello!! C 언어 강성호 김학배 최우영.
학습목표 Chapter 2-1. 변수와 포인터 변수의 선언과 변수에 대한 메모리 할당을 살펴본다.
주)INVENTORNICS 노창배 소프트웨어 김 경 순
자료구조 (Data Structure).
자바 5.0 프로그래밍.
테이블 관리 테이블 생성,수정,삭제 데이터 입력 수정, 삭제 2010학년도 2학기.
Stored program 2 장종원
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
Excel 일차 강사 : 박영민.
Structures Summary.
Stored program 장종원
Presentation transcript:

ODBC (Open DataBaseConnectivity) 설 성 훈

※목차 ODBC의 정의 ODBC의 구조 ODBC의 구성 요소 ODBC의 핸들에 대해…(환경,연결,명령) 함수에 따른 각 예제들… 드라이버 생성하기

ODBC의 정의 ODBC는 DBMS를 다루는 드라이버와 응용 프래그램을 연결하는 인터페이스. 응용 프로그램은 ODBC함수를 호출하여 DBMS의 데이터에 엑세스하며, 중간의 드라이버를 교체하면 같은 코드로 다른 DBMS의 데이터에 접근 할 수 있음. 하나의 소스로 다른 DBMS에게 접근 하는 것. (참고, DBMS끼리는 서로 호환되지 않음, 그래서 응용 프로그램은 DBMS에 종속적임. 이를 해결하기 위해 ODBC가 시도됨)

ODBC의 구조 드라이버 A DBMS A 드라이버 B DBMS B 드라이버 관리자 응용 프로그램 각 DBMS는 고유의 ODBC 드라이버를 제공. 특정한 DBMS에 종속적이지 않고, 언어에도 무관하게 사용할 수 있음. DBMS A 드라이버 A DBMS B 드라이버 B 드라이버 관리자 응용 프로그램 DBMS C 드라이버 C DBMS D 드라이버 D

ODBC의 구성 요소 데이터 소스 응용 프로그램 데이터를 액세스하는 프로그램 드라이버 관리자 응용 프로그램과 드라이버 사이에서 통신 역할을 담당 응용 프로그램이 요구한 데이터 소스의 드라이버를 찾아 로드를 함. 드라이버 ODBC API 함수의 구현부를 가지는 실행 모듈(DLL) 데이터 소스 데이터에 엑세스 하기 위한 모든 정보들의 집합

ODBC 데이터 타입 SQL 타입 ID SQL 데이터 타입 SQL_CHAR CHAR SQL_VARCHAR VARCHAR SQL_DECIMAL DECIMAL SQL_SMALLINT SMALLINTEGER SQL_INTEGER INTGER SQL_BINARY BINARY SQL_TYPE_DATE DATE (DBMS와 대응되는 타입만 지원)

(응용프로그램에서 DB로부터 결과 셋을 돌려받을 때나 버퍼의 타입을 지정할 때 사용) C언어의 데이터 타입 C 타입 ID typedef C 데이터 타입 SQL_C_CHAR SQLCHAR* unsigned char* SQL_C_SSHORT SQLSMALLINT short int SQL_C_USHORT SQLUSMALLINT unsigned short int SQL_C_SLONG SQLINTEGER long int SQL_C_ULONG SQLUINTEGER unsigned long int SQL_C_FLOAT SQLREAD float SQL_C_DOUBLE SQLDOUBLE double SQL_C_BIT SQLSCHAR unsigned char SQL_C_BINARY SQL_C_BOOKMARK BOOKMARK SQL_C_TYPE_DATE SQL_DATE_STRUCT struct tagDATE)STRUCT{ SQLSMALLINT year; SQLUSMALLINT month; SQLUSMALLINT day; } DATE_STRUCT; (응용프로그램에서 DB로부터 결과 셋을 돌려받을 때나 버퍼의 타입을 지정할 때 사용)

ODBC 헤더파일 #include <sql.h> #include <sqlext.h> ODBC API함수들에 대한 원형,매크로 등이 선언되어 있음.

핸들 핸들 변수들 SQLRETURN SQLAllocHandle( //핸들 할당 함수 SQLHENV hEnv; //환경 SQLHDBC hDbc; //연결 SQLHSTMT hStmt; //명령 SQLHDESC hDes; //설명자 SQLRETURN SQLAllocHandle( //핸들 할당 함수 SQLSMALLINT HandleType, //할당하고자 하는 핸들의 타입 SQLHANDLE InputHandle, //새 핸들이 포함될 부모 핸들을 지정 SQLHANDLE* OutputHandlePtr //새로 만들어질 핸들의 번지를 지정하는 출력용 인수 ); -> 핸들 타입의 종류: SQL_HANDLE_ENV, SQL_HANDLE_DBC, SQL_HANDLE_STMT, SQL_HANDLE_DESC SQLRETURN SQLFreeHandle(SQLSMALLINT Handle Type, SQLHANDLE Handle); //핸들 해제 함수

환경 핸들 환경의 현재상태, 진단 정보, 환경의 속성, 연결에 대한 정보 등의 정보들이 저장되어 있음. 연결은 프로그램이 어떤 데이터에 소스에 연결되어 있는지에 대한 정보를 가지고, 연결들의 목록이 환경에 저장됨. 예제 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv); SQLSetEnvAttr(hEnv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER); 1번째 인자: 환경핸들 2번째 인자: 설정하고자 하는 속성 3번째 인자: 속성 값 4번째 인자: 속성값의 길이

연결 핸들 연결: 사용할 데이터의 소스와 드라이버에 대한 정보 연결핸들: 연결의 상태, 진단 정보, 명령 핸들, 설명자 핸들의 목록, 연결의 속성 등의 정보가 포함 SQLAllocHandle(SQL_HANDLE_DBC, hEnv,&hDbc); 이 함수 호출로 연결 핸들을 할당시켜줌.

연결(실제 데이터 소스와 연결) SQLConnect, SQLDriverConnect, SQLBrowseconnect SQLRETURN SQLDriverConnect( SQLHDBC ConnectionHandle, //할당한 연결 핸들 SQLHWND WindowHandle, //메인 윈도우의 핸들 SQLCHAR *InconnectionString, //연결정보를 지정하는 연결 문자열 SQLSMALLINT StringLength1 , //연결 문자열의 길이 SQLCHAR *OutConnectionString, //함수가 실행 중에 구성한 연결 문자열을 돌려받기 위한 문자열의 버퍼 SQLSMALLINT BufferLength, //버퍼의 길이 SQLSMALLINT *StringLength2Ptr, //문자열 길이의 번지 SQLUSMALLINT DriverCompletion //드라이버 옵션 );  5~8번째 인자는 정보가 불완전할 경우 사용자가 추가 정보를 대화상자로 요구하고 완성된 문자열을 리턴할 때 쓰인다. (참고) 연결문자열이란, 데이터 소스에 연결하기 위한 정보를 가지는 문자열

연결 예제 //함수 호출에 필요한 변수들 SQLCHAR InCon[255]; SQLCHAR OutCon[1024]; SQLSMALLINT cbOutCon; TCHAR Dir[MAX_PATH]; //MDB 파일에 연결하기 GetCurrentDirectory(MAX_PATH,Dir); wsprintf((TCHAR *)InCon,"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=%s\\Girl.mdb;",Dir); SQLDriverConnect(hDbc,hDlgMain,InCon,sizeof(InCon),OutCon,sizeof(OutCon),&cbOutCon, SQL_DRIVER_NOPROMPT);

명령 핸들 SQLRETURN SQLExecDirect( SQLHSTMT StatementHandle, //명령핸들 SQLAllocHandle(SQL_HANDLE_STMT,hDbc,&hStmt); 명령 실행 (SQL문을 실행시켜줌) SQLRETURN SQLExecDirect( SQLHSTMT StatementHandle, //명령핸들 SQLCHAR* StatemnetText, //실행할 SQL문 SQLINTEGER TextLength //SQL문의 길이 ); SQLExecDirect(hStmt,(SQLCHAR *)"select name from girl",SQL_NTS);

명령 핸들 예 SQLExecDirect(hStmt,(SQLCHAR *)"select name from girl",SQL_NTS);  "Delete from girl where name='%s'“  "Update girl set name='%s', where name='%s'"

바인딩 결과 셋의 컬럼과 변수를 연결하는 동작 결과 값을 돌려 받기 위해 사용됨. SQLRETURN SQLBindCol( 결과 셋(Result Set: Select문이 리턴 하는 레코드 집합) 결과 값을 돌려 받기 위해 사용됨. SQLRETURN SQLBindCol( SQLHSTMT StatementHandle, //명령 핸들 SQLUSMALLINT ColumnNumber, //바인딩 될 컬럼의 번호 SQLSMALLINT TargetType, // 바인딩 되는 변수의 데이터 타입 SQLPOINTER TargetValuePtr, // 저장할 버퍼 SQLINTEGER BufferLength, // 버퍼의 길이 SQLLEN* StrLen_or_lnd // 길이or 상태 값을 리턴 받을 변수의 번지 );

바인딩 예제 SQLINTEGER lName,lAge; //변수 SQLBindCol(hStmt,1,SQL_C_CHAR,Name,sizeof(Name),&lName); SQLBindCol(hStmt,2,SQL_C_ULONG,&Age,0,&lAge);

데이터 가져오기, 마무리 하기 SQLRETURN SQLFetch(SQLHSTMT StatementHandle); //명령핸들 SQL_NO_DATA 를 반복적으로 호출하면 결과 셋의 모든 레코드를 읽을 수 있음 마무리작업들.. SQLCLOSECURSOR(); //명령핸들에 열려진 커서를 닫고 결과셋을 모두 버리는 함수 (명령을 재사용하려면 반드시 결과셋을 먼저 버리고 재사용 해야함) SQLFreeHandle(); //할당된 핸들을 해제하는 함수 (할당된 순서의 역순으로 해제) SQLDisconnect(); //데이터 소스와의 연결을 끊음

예제 //읽어온 데이터 출력 if(SQLFetch(hStmt) != SQL_NO_DATA) { SetWindowText(hFName,(LPCTSTR)Name); wsprintf(szSQL,"%d",Age); SetWindowText(hAge,szSQL); } //핸들 할당 해제 하기 SQLFreeHandle(SQL_HANDLE_STMT,hStmt); SQLDisconnect(hDbc); SQLFreeHandle(SQL_HANDLE_DBC,hDbc); SQLFreeHandle(SQL_HANDLE_ENV,hEnv);

드라이버 생성하기 제어판 관리 도구데이터 원본 ODBC 클릭!

드라이버 생성하기(2)

드라이버 생성하기(3)

THE END