양승혁 Yang_ka@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.07.23 A S P Chap 7. 데이터베이스와 DB 프로그래밍 양승혁 Yang_ka@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.07.23
목차 데이터베이스와 DB 프로그래밍 데이터베이스와 데이터베이스 관리 시스템 MS SQL Server ASP와 DB의 연결 ADO와 OLE DB ADO의 객체 모델 ASP와 DB의 연결 연결 문자열 정의 Universal Data Link파일 작성 기본적인 DB 프로그래밍 IST (Information Sciences & Technology) Laboratory
데이터베이스와 데이터베이스 관리 시스템(1/3) 데이터를 논리적으로 모은 것 데이터를 구조화하여 검색과 갱신의 효율화를 꾀한 것 데이터베이스 관리 시스템(DBMS) 데이터를 효과적으로 이용할 수 있도록 정리·보관하기 위한 기본 소프트웨어 오라클사-Oracle, IBM사-DB2, MS사-MS SQL Server 구조화된 질의 언어(SQL,Structured Query Language) 데이터베이스와의 의사소통이 가능한 언어 정의 언어(DDL) 제어 언어(DCL) 관리 언어(DML) 동적이고 상호 대화가 가능한 웹 사이트를 구현하기 위해서 사용하는 서버측 스크립트 환경 IST (Information Sciences & Technology) Laboratory
데이터베이스와 데이터베이스 관리 시스템(2/3) 관리 언어(DML) SELECT문 테이블에서 하나 이상의 레코드를 검색할 때 사용 Ex) SELECT * FROM 회원 WHERE 회원 ID = ‘kdhong’ UPDATE문 테이블에서 레코드를 수정할 때 사용 Ex) UPDATE 회원 SET 전화번호 =’02)4056-7890’ WHERE 회원 ID=‘kdgong’ SELECT select_list FROM table_source [WHERE search_cndition] [ORDER BY order_expression[ ASC | DESC] ] 동적이고 상호 대화가 가능한 웹 사이트를 구현하기 위해서 사용하는 서버측 스크립트 환경 UPDATE table_source SET column_name = expression [WHERE search_condition] IST (Information Sciences & Technology) Laboratory
데이터베이스와 데이터베이스 관리 시스템(3/3) 관리 언어(DML) INSERT문 테이블에서 레코드를 등록할 때 사용 Ex) INSERT INTO 회원 VALUES(‘herkun’,’허균’,’김제특별시’,’850224-1324253’, 02)768-1234’,’herkyun@aaa.com)) DELETE문 테이블에서 레코드를 삭제할 때 사용 Ex) DELETE FROM 회원 WHERE 회원ID =‘herkyun’ INSERT[INTO] table_name VALUES(column_value) 동적이고 상호 대화가 가능한 웹 사이트를 구현하기 위해서 사용하는 서버측 스크립트 환경 DELETE [FROM] table_name [WHERE search_condition] IST (Information Sciences & Technology) Laboratory
MS SQL서버(1/5) MS SQL Server Microsoft SQL Server Management Studio 데이터베이스 관리 프로그램 에디터 창 객체 탐색기 결과창 IST (Information Sciences & Technology) Laboratory
MS SQL서버(2/5) ADO와 OLE DB 데이터베이스에 액세스하는 방법 ODBC(Open Database Connectivity)와 기능상 구조가 비슷 ADO(ActiveX Data Object) 데이터베이스에 접근하여 애플리케이션을 개발할 수 있도록 도와주는 개체에 모임 주요 개체 5개, 보조 4개 컬렉션 4개 OLE DB(Object Linking and Embedding, Database) 통일된 방식으로 저장된 여러 종류의 데이터베이스에 접근하기 위해 만들어진 API IST (Information Sciences & Technology) Laboratory
MS SQL서버(3/5) ADO기능 SQL문을 이용하여 질의하고 결과를 출력 인터넷을 통해 파일 저장소에 저장된 정보에 액세스 이메일 서버와 같은 메시징 시스템의 서버와 메시지 관리 데이터베이스의 데이터를 XML 문서로 저장 XML 스트림으로 받거나 XML로 기술된 명령을 실행 데이터를 바이너리나 XML 스트림으로 저장 사용자가 데이터베이스의 데이터를 열람,변경할 수 있도록 허용 수정 가능한 데이터베이스 명령을 생성, 반복 사용 보관해둔 프로시저 실행 데이터베이스로부터 계층적인 결과를 생성하고 관리 원격, 단절된 레코드셋을 생성 IST (Information Sciences & Technology) Laboratory
MS SQL서버(4/5) ADO개체 모델 개체 설명 Connection 데이터베이스와의 연결 Command RecordSet 명령 실행의 결과에 대한 레코드의 집합 Record 디렉터리 구조에 있는, 파일과 같이 반 구조화 된 저장소에 저장된 데이터를 처리할 때 사용 Stream 전자 메일 메시지나 웹 페이지와 같은 내용을 액세스 할 때 사용 Parameter 스토어드 프로시저 등에 기반한 Command 개체와 함께 사용되는 파라미터나 인수 Field 일반 데이터형을 사용하는 컬럼 데이터 Property 프로바이더에 의해 정의되는 ADO 개체의 특성 Error 데이터 접근 실패에 대한 상세한 설명 IST (Information Sciences & Technology) Laboratory
MS SQL서버(5/5) ADO 주요 컬렉션 컬렉션 설명 Fields Recordset 개체나 Record 개체의 모든 Field 개체를 포함 Properties 개체 인스턴스에 대한 모든 속성 Parameters Command 개체의 파라미터를 포함 Errors 명령에 의해 생성되었던 마지막 오류에 대한 세부 사항 IST (Information Sciences & Technology) Laboratory
ASP와 DB 연결(1/4) ASP와 DB 연결 연결 문자열 정의 ASP와 DB의 연결 정보 'Connection 객체를 생성 Set objDBConn = Server.CreateObject("ADODB.Connection") '연결 문자열 정의 strConn = "Provider=SQLOLEDB.1;Data Source=localhost;Initial Catalog=Pubs;User ID=sa;Password=1234“ '데이터베이스에 연결 objDBConn.Open strConn IST (Information Sciences & Technology) Laboratory
ASP와 DB 연결(2/4) ASP와 DB 연결 연결 문자열 정의 Provider Data Source OLEDB 프로바이더를 정의 Data Source DBMS가 설치된 서버 이름을 지정 Initial Catalog 사용할 데이터베이스 지정 연결 계정 정보 Persist Security Info 보안 정보를 저장 기본값은 false IST (Information Sciences & Technology) Laboratory
ASP와 DB 연결(3/4) Universal Data Link 파일 작성 Universal Data Link 파일 자동으로 연결 문자열을 생성해주는 파일 'Connection 객체를 생성 Set objDBConn = Server.CreateObject("ADODB.Connection") '연결 문자열 정의 objDBConn.Open “File Name=C:/InetPub/wwroot/DBConn.udl '데이터베이스에 연결 objDBConn.Open strConn IST (Information Sciences & Technology) Laboratory
ASP와 DB 연결(4/4) <%OPTION EXPLICIT%> <h3>연결 문자열을 사용하여 데이터베이스에 연결하기<hr noshade></h3> <% Dim objDBConn, strConn 'Connection 객체를 생성 Set objDBConn = Server.CreateObject("ADODB.Connection") '연결 문자열 정의 strConn = "Provider=SQLOLEDB.1;Data Source=127.0.0.1;Initial Catalog=Pubs;User ID=sa;Password=1234" '데이터베이스에 연결 objDBConn.Open strConn '데이터베이스 연결 확인 If objDBConn.State = 1 Then Response.Write "데이터베이스에 연결되었습니다" Else Response.Write "데이터베이스 연결에 실패하였습니다." End If '데이터베이스 연결 종료 및 객체 소멸 objDBConn.Close Set objDBConn = Nothing %> DBConn.asp IST (Information Sciences & Technology) Laboratory
기본적인 DB프로그래밍(1/2) DB로부터 데이터 출력 Recordset 개체 Recordset.MoveNext 메소드 <%OPTION EXPLICIT Dim objDBConn, objRs, strConn, strSQL Set objDBConn = Server.CreateObject("ADODB.Connection") strConn = "Provider=SQLOLEDB.1;Data Source=localhost;Initial Catalog=Pubs;User ID=sa;Password=1234“ objDBConn.Open strConn '질의문 작성 strSQL = "SELECT * FROM Titles ORDER BY Title ASC“ ‘질의 결과 반환되는 데이터를 저장할 레코드셋 개체 생성 Set objRs = Server.CreateObject("ADODB.RecordSet") ‘데이터베이스에질의 objRs.Open strSQL, objDBConn %> <h3>DB로부터 데이터 추출하기<hr noshade></h3> <% ‘레코드가 끝날 때가지 루프를 돌며 도서 제목 출력 Do While objRs.EOF = False Response.Write objRs("Title") & "<br>" & chr(13) objRs.MoveNext Loop '연결 종료 및 연결 개체 소멸 objRs.Close objDBConn.Close Set objRs = Nothing Set objDBConn = Nothing RetrieveData.asp 기본적인 DB프로그래밍(1/2) DB로부터 데이터 출력 Recordset 개체 한번에 하나에 레코드에만 접근 2차원 배열과 같은 구조 Recordset.MoveNext 메소드 다음 래코드로 이동 Response.Write 메소드 정보를 출력 BOF(Before Of File) EOF(End Of File) title type . 1 … 2 3 IST (Information Sciences & Technology) Laboratory
기본적인 DB프로그래밍(2/2) DB에 데이터 등록 <%OPTION EXPLICIT%> Insertdata.asp <%OPTION EXPLICIT%> <h3>데이터베이스에 데이터 저장하기<hr noshade></h3> <% Dim objDBConn, strConn, strSQL, intRowAffected Set objDBConn = Server.CreateObject("ADODB.Connection") strConn = "Provider=SQLOLEDB.1;Data Source=localhost;Initial Catalog=Pubs;User ID=sa;Password=1234" objDBConn.Open strConn 'INSERT 구문 작성하기 strSQL = " INSERT INTO Titles VALUES ('CC546','business', 1532, 4000, 8000, 10 ,4 , 2010-07-23, 'ASP.NET 프로그래밍') " 'Connection 객체의 Execute 메소드를 이용하여 INSERT 문 실행 objDBConn.Execute strSQL, intRowAffected 'INSERT 문 실행 결과 반영된 레코드 숫자 출력 Response.Write intRowAffected & "개의 레코드가 적용되었습니다.“ '연결 종료 및 객체 소멸 objDBConn.Close Set objDBConn = Nothing %> IST (Information Sciences & Technology) Laboratory
Yang_ka@kunsan.ac.kr 군산대학교 정보통계학과 정보과학기술 연구실 2012.01.03 감사합니다 Yang_ka@kunsan.ac.kr 군산대학교 정보통계학과 정보과학기술 연구실 2012.01.03 양승혁 Yang_ka@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.07.23