Presentation is loading. Please wait.

Presentation is loading. Please wait.

Database Programming의 원리

Similar presentations


Presentation on theme: "Database Programming의 원리"— Presentation transcript:

1 Database Programming의 원리
Data Modeling Database programming의 원리 Database Programming의 원리

2 개요 강의제목 목표 목차 Database programming의 원리
Web과 database의 연동의 원리를 이해하고 web script언어를 이용하여 database를 조작하는 방법을 터득 목차 개요 연동의 문제점 Database와의 연결방식 Middleware: ODBC, JDBC, Perl DB Programming 예제 연동 방식

3 Database Connectivity`
DBMS Database ? 일반 프로그램에서 database에 접근 질의 결과를 프로그램 내부의 데이터 변수 를 가지고 조작, 처리 해결해야 할 일 하나의 응용프로그램으로 다양한 데이터 베이스 접근 Database driver의 필요성 제공 Impendence Mismatch 문제를 해결해야 함 Query results (RDB)는 집합(Set) 일반 program의 변수는 “set”을 직접 처리할 수 없음 M_field_A M_field_B Program variable Row Field A Field B …. DBMS Database

4 Database와의 connection 방식
DB Server Application DBMS Database Client Program DBMS dependent API Server Side Client Side DB Client Application DBMS Client Program Server Side Client Side Networking Module Database MiddleWare For DB DBMS Database Client Program Uniform API가 필요 예) ODBC, JDBC 등

5 Database에 대한 Uniform Interface (Middleware)
Application Driver Manager ODBC Driver Oracle Database MSSQL Sybase MySQL JDBC ODBC Perl DBI OLE DB DAO ADO ODBC Architecture Client Side Java Application JDBC Manager JDBC Driver JDBC-ODBC Bridge ODBC Native Sybase Database MySQL Informix Oracle Server Side 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 JDBC Architecture

6 ODBC 기능 및 driver 활용 Application Driver Manager (ODBC.DLL) DB Driver
Oracle Database MSSQL Sybase MySQL Application DB 접속, 세션 요청 SQL 결과를 위한 저장 영역 및 데이터 포맷 정의 결과 요청 에러 처리 Query/Commit/Rollback 요청 DB 접속 종료 Driver Manager (ODBC.DLL) DB (data) source name을 특정 driver의 DLL로 mapping ODBC 호출 검증 DB Driver Data source에 연결 설정 Data source에 질의 요청 전송 Data format 변환 Query results를 application쪽으로 반환 Error code 리턴 Cursor 선언 및 조작 Transaction 처리 ODBC Architecture NameCard Database Program code ODBC Driver의 활용 (in Windows)

7 Web과 Database연동 방식: CGI 방식
CGI가 직접 DBMS에 접근해 데이터를 추출 구현 용이  기존의 웹서버 브라우저 그대로 사용 One Request  One Process Context switching overhead Internet CGI DB Application HTML Data HTTP Request HTML Results Calls Web Server 확장 API 방식 DB application program을 Web Server안에서 직접 구동 DB Request  Web Server에서 처리 Context switching overhead 없음 특정 web browser에 종속 Internet DB Application Program HTML Data HTTP Request HTML Results Web Server Ex) Apache + PHP

8 Web과 Database연동 방식: Demon 방식
Internet Remote Method Invocation HTML Data HTTP Request HTML Results Web Server Demon Query Results DB requests Java Applet Client에 있는 Java Applet이 직접 질의요청 Servlet 방식 Internet Servlet Process HTML Data HTTP Request HTML Results Web Server data Calls DB application program을 Web Server가 대신 호출 DB Request  Web Server에서 처리 Context switching overhead 없음 특정 web browser에 독립

9 Database Programming 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; Make a connection Build SQL statement Send SQL Fetch Row More rows ? Close result set Close SQL Close connection DB접속 질의준비 /요청 변수매핑 질의결과 출력 Programming 절차 DB종료

10 Database Programming 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; Make a connection Build SQL statement Send SQL Fetch Row More rows ? Close result set Close SQL Close connection DB접속 질의준비 /요청 변수매핑 및 질의결과출력 Programming 절차 DB종료

11 Database Programming 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); ?> DB접속 Make a connection Build SQL statement Send SQL Fetch Row More rows ? Close result set Close SQL Close connection 변수매핑 질의준비 /요청 질의준비 /요청 Programming 절차 질의결과 출력 DB종료


Download ppt "Database Programming의 원리"

Similar presentations


Ads by Google