Database Programming.

Slides:



Advertisements
Similar presentations
Web Based Data Warehouse Query Tool 이화여자대학교 2002 년 컴퓨터학과 졸업프로젝트 14 조.
Advertisements

Python Essential 세미나 1 Python Databases Module - Part 2 (MySQL Module) 발표자 : 박영국 ( 화 )
CUBRID 소개 (Object 개념) 서비스 사업부 / 기술지원팀. 목차 구조 일반적 특징 객체지향 특징 ORDB 개념을 이용한 스키마 ORDB 개념을 이용한 질의.
1 SQL 정보보호학과 양 계 탁. 2 SQL 개요 SQL 개요 3 Database u 연관된 데이터들의 집합 u 데이터를 쉽게 관리하는 프로그램 종 류종 류 관계형 데이터베이스 객체지향형 데이터베이스 계층형 데이터베이스 네트워크 데이터베이스 데이터를 2 차원적인 테.
MrDataBld 2.x 제품 소개 2007.
웹 프로그래밍 HTML, 자바스크립트, ASP를 중심으로
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
Youngmin Jung JOSSO 설치 Youngmin Jung
PHP programming 2000년 11월 13일 데이터베이스 연구실 김호숙.
DataWindow .NET 프로넷 소프트㈜.
소리가 작으면 이어폰 사용 권장!.
김 상 국, 김 기 훈 한남대학교 컴퓨터공학과 데이터베이스 실험실
데이터베이스 시스템.
Database Laboratory, Hong Ik University
소프트웨어시스템설계(6주) 데이터베이스 연동
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
C#에서 데이터베이스 연동 방법.
SQL*Plus - Oracle ISQL -
Chapter-2. 개발환경 구축하기.
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
JSP Programming with a Workbook
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
팀 명: Con Spirito 팀 원: 경주리 김다정 김소담 최은미
JDBC 프로그래밍 이수지 이동주 1.
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
Toad for SQL Server 제품 소개서 – 프로넷소프트㈜.
Web Server와 DB 연동.
데이터베이스 와 JDBC 1.데이터베이스와 데이터베이스 관리 시스템은? 2.데이터베이스 장점?
JDBC 소개 및 설치 슬라이드 노트에 모든 설명을 작성 Database Laboratory.
Chapter 01 데이터베이스 시스템.
DB2.
주)INVENTORNICS 노창배 소프트웨어 김 경 순
11장. 데이터베이스 서버 구축과 운영.
ASP 정 보 보 호 학 과 양 계 탁.
2007. Database Term Project Team 2 윤형석, 김희용, 최현대 우경남, 이상제
NTAS 소개 (Network Transaction Application Server)
Chapter 05 데이터베이스 프로그래밍.
담당교수 : 이형원교수님 컴퓨터응용과학부 정은영
소프트웨어시스템 실험 Software Systems Lab. 데이터베이스 기초
(Network Transaction Application Server)
웹서버와 설치에 필요한 것 WWW ( world wide web ) TCP/IP 프로토콜을 이용하는 클라이언트/서버 환경
뷰와 저장 프로시저 뷰의 개념을 이해한다. 뷰의 정의와 관리 방법을 이해한다. 뷰를 사용함으로써 생기는 장점을 알아본다.
1장. 데이터베이스 시스템 컴퓨터를 사용하여 정보를 수집하고 분석하는데 데이터베이스 기술이 활용되고 있음
8 데이터베이스 사용하기.
You YoungSEok Oracle 설치 You YoungSEok
주)INVENTORNICS 노창배 소프트웨어 김 경 순
JDBC (Java Database Connectivity)
CHAPTER 06. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
Database Programing 이름 : 김 수 종 학번 :
JSP 게시판 구현.
II. XML과 Database 연동 [Beginning XML, 제13장]
CGI (Common Gateway Interface)
데이터베이스 (Database) SQL 추가 기능: 주장, 뷰, 프로그래밍 기법 문양세 강원대학교 IT대학 컴퓨터과학전공.
Data Base Web Programming
NTAS 소개 (Network Transaction Application Server)
CGI (Common Gateway Interface)
ODBC &DAO 안명상.
myfood.com 상명대 맛집 홈페이지 구축 제안서
SQL INJECTION MADE BY 김 현중.
뇌를 자극하는 Windows Server 장. 데이터베이스 서버.
Stored program 장종원
웹 프로그래밍 기술 요약 Yang-Sae Moon Department of Computer Science
Web Server Install.
Data Base Web Programming
SQL Server Reporting Services Feature
Presentation transcript:

Database Programming

Contents Overview (Architecture) Problems DB와의 연결 방식 Middleware Architecture ODBC, JDBC, Perl DB Programming Examples Web & Database 연동 방식

Database Connectivity 질의 결과를 프로그램내부에서 처리 하나의 응용프로그램으로 다양한 데이타베이스 접근 Cf) device driver  database driver

Problems ? Heterogeneity Impendence Mismatch Access to Diverse DBMS Query results (RDB)  Set Program variable Directly cannot deal with “Set” DBMS Database ?

-------- -------------- ------- Impedance Mismatch Program variable -------- -------------- ------- Row Field A Field B …. M_field_A M_field_B … DBMS Database

DB와의 연결 구조 (1) DBMS dependent API Client Program DBMS Database DB Server Application DBMS Database Client Side Server Side

DB와의 연결 구조 (2) Client Program DBMS Database Client Side Server Side Application DBMS Networking Module Database Client Side Server Side

DB와의 연결 구조 (3) Client Program MiddleWare For DB DBMS Database

Uniform Interface to DB JDBC ODBC Perl DBI OLE DB DAO ADO …

ODBC Architecture Application Driver Manager “what” “how” Oracle Database Informix Database Sybase Database MySQL Database

JDBC Architecture Java Application JDBC Manager Sybase Database MySQL Driver JDBC-ODBC Bridge JDBC Driver JDBC Driver ODBC Driver Native Driver Sybase Database MySQL Database Informix Driver Oracle Database

Perl DB Architecture Perl Script DBI Oracle Database MySQL Database DBD ODBC DBC SQLServer DBC Sybase DBD ODBC Driver Oracle Database MySQL Database SQLServer Database Sybase Database

Actions on Client & Server Open a connection Sends a query statement Retrieve results Closes a connection Creates a Connection session Executes statement Sends results Close the session Client Side Server Side

ODBC Application DB 접속, 세션 요청 SQL 결과를 위한 저장 영역 및 데이터 포맷 정의 결과 요청 에러 처리 Query/Commit/Rollback 요청 DB 접속 종료

ODBC Driver Manager (ODBC.DLL) DB Driver DB (data) source name을 특정 driver의 DLL로 mapping ODBC 호출 검증 DB Driver Data source에 연결 설정 Data source에 질의 요청 전송 Data format 변환 Query results를 application쪽으로 반환 Error code 리턴 Cursor 선언 및 조작 Transaction 처리

ODBC drivers

Example Program code NameCard DB

Database Programming Make a connection More rows ? Build SQL statement Close result set Send SQL statement Close SQL statement Fetch Row Close connection

Example (ODBC API Code) Int example (UCHAR *server, UCHAR *uid, UCHAR *pwd) { HENV henv; HDBC hdbc; HSTMT hstmt; UCHAR id[10], name[100], select[200]; SDWORD namelen, idlen; RETCODE rc; SQLAllocEnv(&henv); SQLAllocConnect(henv, &hdbc); rc=SQLConnect(hdbc, server, SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) return printf(“can’t connect”); SQLAllocStmt(hdbc, &hstmt); lstrcpy((LPTSTR) select, “SELECT InstructId, Name FROM Instructor”); if (SQLExecDirect(hstmt, select, SQL_NTS) != SQL_SUCCESS) return printf(“can’t exec direct”); printf(“InstructorID Name\n”); SQLBindCol(hstmt, 1, SQL_C_CHAR, id, (SDWORD)sizeof(id), &idlen); SQLBindCol(hstmt, 2, SQL_C_CHAR, name, (SDWORD)sizeof(name), &namelen); while(TRUE){ rc = SQLFetch(hstmt); if (rc != SQL_NO_DATA_FOUND) printf(“%-12s %-9s\n”, id, name); else break; } SQLTransact(henv, hdbc, SQL_COMMIT); SQLDisconnect(hdbc); SQLFreeConnect(hdbc); SQLFreeEnv(henv); return TRUE; Example (ODBC API Code) DB접속 질의준비 /요청 변수매핑 질의결과 출력 DB종료

Example (Perl Code) # 데이타베이스 접속--------------------------------------------------- $dsn = "dbi:Oracle:host=swan;sid=ora8"; $ENV{ORACLE_HOME} = "/usr4/ora8/app/oracle/product/8.0.4"; $ENV{ORA_NLS32} = "$ORACLE_HOME/ocommon/nls/admin/data"; $user = "catalog"; $password = "stop"; $dbh = DBI->connect($dsn, $user, $password) || die "$DBI::errstr"; $sql_doc = "SELECT did, file_path, input_date FROM docs"; # 모든 문서에 대해서 #print "<font color=black size=2>$sql_doc</font>\n"; $sth = $dbh->prepare($sql_doc) || die "DBI::errstr"; $sth->execute() || die "DBI::errstr"; while (($did, $file_path, $input_date) = $sth->fetchrow_array()){ # print "[문서번호] $did [화일명] $file_path [입력날짜] $input_date\n","<br>\n";; } $dbh->do (“insert into $유_name values (“perl”, “database”, ‘2000/10/17’, …); $dbh->do (“drop table students”); $sth->finish; $dbh->disconnect;

Example (PHP Code) $host = "localhost"; $user = "php"; $password = "12345"; $connect = mysql_connect($host, $user, $password); mysql_select_db('php_db',$connect); $bookname = $_POST["bookname"]; $bookauthor = $_POST["bookauthor"]; $pubyear = $_POST["pubyear"]; $position1 = $_POST["position1"]; $position2 = $_POST["position2"]; $sql = "insert into bookmanage values('$bookname', '$bookauthor' ,'$pubyear‘ ,'$position1','$position2')"; mysql_query($sql,$connect); $connect = mysql_connect($host,$user,$password); mysql_select_db('php_db', $connect); $sql = "select * from bookmanage"; $result = mysql_query($sql,$connect); $rows = mysql_num_rows($result); echo"<table border=1>"; echo"<tr><th>책이름<th>책저자<th>출판년도<th>위치1<th>위치2"; for($i=0; $i<$rows; $i++) { $record = mysql_fetch_array($result); echo "<tr>"; echo "<td>$record[bookname]"; echo "<td>$record[bookauthor]"; echo "<td>$record[pubyear]"; echo "<td>$record[position1]"; echo "<td>$record[position2]"; } echo"</table>"; mysql_close($connect); ?>

Example (Visual C++) ODBC설정 데이타베이스 접속 Result set과 매핑되는 변수 마련 데이타베이스와 테이블 지정 DB접속을 위한 object 생성 Result set과 매핑되는 변수 마련 Result set  RECORDSET object  DOCUMENT object Result set 출력 DOCUMENT class 변수  VIEW object

CPubsSet(CDatabase* pDatabase = NULL); Class CPubsDoc : public CDocument CPubsSet m_pubsSet Class CPubsSet : public CRecordSet CPubsSet(CDatabase* pDatabase = NULL); Class CPubsView : public CRecordView Database CPubsSet* m_pSet; m_pSet->Open(); m_pSet->MoveNext(); m_pSet->Update(); . . . m_pSet->Close(); 질의 요청 Result set 제어

DB Field  Prog. Variable (Visual C++)

Web & Database CGI 방식 Demon 방식 확장 API 방식 Sublet 방식

CGI 방식 HTTP Request Calls Web Server Internet HTML HTML Results HTML CGI DB Application Web Server Internet HTML HTML Results CGI가 직접 DBMS에 접근해 데이터를 추출 구현 용이  기존의 웹서버 브라우저 그대로 사용 One Request  One Process Context switching overhead HTML Data

확장 API 방식 HTTP Request Ex) Apache + PHP Web Server Internet DB Application Program Internet HTML Results DB application program을 Web Server안에서 직접 구동 DB Request  Web Server에서 처리 Context switching overhead 없음 특정 web browser에 종속 HTML Data

Demon 방식 DB requests Java Applet HTTP Request Demon Web Server Remote Method Invocation Internet HTML Results Query Results Client에 있는 Java Applet이 직접 질의요청 HTML Data

Servelet 방식 HTTP Request Calls Web Server Internet HTML HTML Results Process Internet HTML HTML Results data DB application program을 Web Server가 대신 호출 DB Request  Web Server에서 처리 Context switching overhead 없음 특정 web browser에 독립 HTML Data