270 likes | 687 Views
Chap 13. DAO 를 이용하여 데이터베이스 만들기. 01. DAO 개요 02. DAO 를 이용하여 응용 프로그램 만들기 03. DAO 를 이용하여 데이터베이스 생성하기. DAO 개요. DAO 특징 데이터 컨트롤이 세밀한 작업이나 데이터베이스 자체를 조작하거나 새로운 테이블을 만드는 작업 등은 할 수 없어 데이터베이스를 파일 수준에서 다루지 않고 좀더 편하게 프로그래밍하기 위해 제공된 개체 DAO(Data Access Object) RDO(Remote Data Object)
E N D
Chap 13. DAO를 이용하여 데이터베이스 만들기
01. DAO 개요02. DAO를 이용하여 응용 프로그램 만들기03. DAO를 이용하여 데이터베이스 생성하기
DAO 개요 • DAO • 특징 • 데이터 컨트롤이 세밀한 작업이나 데이터베이스 자체를 조작하거나 새로운 테이블을 만드는 작업 등은 할 수 없어 데이터베이스를 파일 수준에서 다루지 않고 좀더 편하게 프로그래밍하기 위해 제공된 개체 • DAO(Data Access Object) • RDO(Remote Data Object) • ADO(Active Data Object) • 데이터베이스와 응용 프로그램을 효과적으로 연결해주는 역할 담당
DAO의 중요한 세가지 개체 • DBEngine 개체 • DAO의 최상위 개체로, DAO 개체의 계층 구조에 있는 다른 모든 개체를 포함하여 제어 • Workspace 개체 • 열려있는 데이터베이스의 저장소 역할을 함 • DAO 개체가 실행되면 자동으로 기본작업 영역 DBEngin.Workspace(0) 가 생성 • Recordset 개체 • 기초 테이블에 있는 레코드 또는 질의(Query)를 실행한 후 생성되는 레코드를 나타냄 • 데이터 베이스에 있는 데이터를 레코드 수준에서 조작
DAO의 주요 개체 • DBEngine 개체, Workspace 개체, Recordset 개체 • DBEngine 개체 • DAO 개체 모델의 최상위 개체로, DAO 개체의 계층 구조에 있는 다른 모든 개체를 포함하며 제어 • 주요 속성
Workspace 개체 • 열려 있는 데이터베이스의 저장소 역할하는 개체 • DAO 개체가 실행되면 자동으로 기본 작업 영역 DBEngine.Workspace(0)가 생성되고 Create Workspace 메소드로 생성된 다른 Workspace와 달리 닫거나 삭제가 불가능 DBEngine Errors Workspace Workspaces Connections Databases Groups Users
주요 속성 및 메소드 로그인한 후 오류가 발생할 때 까지의 시간을 초단위로 설정/ 반환
RecordSet 개체 • 기초 테이블에 있는 레코드 또는 질의를 실행한 후 생성되는 레코드를 표시 • Recordset 개체를 사용하여 레코드 수준에서 데이터베이스에 있는 데이터 조작 가능 • 주요 속성
01. DAO 개요02. DAO를 이용하여 응용 프로그램 만들기03. DAO를 이용하여 데이터베이스 생성하기
DAO를 이용하여 응용 프로그램 만들기 • DAO를 사용하여 주소록 만들기 • DAO를 이용하여 코드를 조작하기 전에 반드시 DAO 개체를 사용한다는 것을 비주얼 베이직에 알려야 함 • [프로젝트] → [참조] 메뉴를 선택하고 대화상자에서 ‘Microsoft DAO 3.51 Object Library’ 항목 선택
[실습하기] 데이터베이스 응용 프로그램 만들기 11 12 폼에 컨트롤 추가하기 각 컨트롤의 속성 설정
데이터베이스를 연결하기 위해 다음과 같은 순서로 데이터베이스를 열어준다 ① Databse 개체를 저장할 변수를 선언한다. Dim MyDB As Database ② Recordset 개체를 저장할 변수를 선언한다. Dim MyRecordset As Recordset ③ OpenDatabase 메소드를 사용하여 데이터베이스 파일을 열어준다. Set MyDB = DBEngine.Workspaces(0).OpenDatabase(“주소록.mdb") ④ OpenRecordset 메소드를 사용하여 Recordset을 열어준다. Set MyRecordSet = MyDb.OpenRecordset("주소록", dbOpenTable)
데이터베이스파일과 Recordset을 열어주는 구문을 Form_Load() 이벤트 핸들러에 작성 Private Sub Form_Load() Set MyDB = DBEngine.Workspaces(0).OpenDatabase(“주소록.mdb") Set MyRecordSet = MyDB.OpenRecordset("주소록", dbOpenTable) End Sub 현재 레코드를 화면에 표시하도록 커맨드버튼(cmdRecordDisp)의 이벤트 핸들러를 작성 Private Sub cmdRecordDisp_Click() txtName = MyRecordset.Fields("이름") txtPhone = MyRecordset.Fields("전화번호") txtAddress = MyRecordset.Fields("주소") txtEmail = MyRecordset.Fields("전자우편주소") txtBirth = MyRecordset.Fields("생년월일") End Sub 프로그램 실행
01. DAO 개요02. DAO를 이용하여 응용 프로그램 만들기03. DAO를 이용하여 데이터베이스 생성하기
DAO를 이용하여 데이터베이스 파일 생성하기 • 생성할 주소록 테이블 구조 폼에 컨트롤 추가하기
버튼의 이벤트 핸들러 작성 Private Sub cmdCreateDB_Click() '데이터베이스, 테이블, 필드를 저장할 변수를 선언한다 Dim MyDB As Database Dim MyTable As TableDef Dim MyField As Field '새로운 데이터베이스 파일을 생성한다 Set MyDB = DBEngine.Workspaces(0).CreateDatabase(“c:\vb\새로만든주소록.MDB", dbLangKorean, dbEncrypt) '새로운 테이블을 생성한다 Set MyTable = MyDB.CreateTableDef("주소록") '테이블에 필드를 추가한다 Set MyField = MyTable.CreateField("번호", dbLong) MyTable.Fields.Append MyField Set MyField = MyTable.CreateField("이름", dbText, 10) MyTable.Fields.Append MyField Set MyField = MyTable.CreateField("휴대폰번호", dbText, 15) MyTable.Fields.Append MyField Set MyField = MyTable.CreateField("주소", dbText, 50) MyTable.Fields.Append MyField 'TableDefs 객체에 테이블을 추가한다 MyDB.TableDefs.Append MyTable MyDB.Close DBEngine.Workspaces(0).Close End Sub
프로그램을 실행하고 버튼을 눌러 DB가 생성되는지 확인
SQL (Structured Query Language) • SQL (Structured Query Language) • 데이터 베이스 조작언어(DML: Data Manipulation Language) • 관계형 데이터 베이스에 연결해서 데이터의 검색 및 저장, 수정, 삭제 등을 할 수 있는 언어 • SQL 문 • 선택질의 • Select 문 : 검색조건에 맞는 데이터를 선택하는 문장 • 실행 질의 • Insert 문: 새로운 데이터를 삽입하는 문장 • Update 문: 기존의 데이터를 수정하는 문장 • Delete 문: 기존의 데이터를 삭제하는 문장 • 데이터 컨트롤 객체는 실행질의를 지원하지 않음
Select 문 • 특정 테이블로 부터 지정된 필드만 추출해서 새로운 레코드 집합(Recordset)을 만들 수 있음 • 선택된 필드명 나열, ‘*’로 표시될 경우 전체 필드들을 선택 • 데이터를 가져올 테이블명을 나열 • 테이블에서 추출할 데이터의 조건을 지정 • 실제 테이블 나열순서가 아닌 특정 필드의 오름차순이나 내림차순으로 정렬되도록 지정 Select 선택될 필드명1, 선택될 필드명2, … From 테이블명 Where 검색조건 [Order by 정렬필드명 [Asc | Desc] ]
Select문의 사용 예 • Select * From 상품 • “상품” 테이블에서 전체 레코드를 추출 • Select 코드, 상품명 From 상품 • “상품” 테이블에서 “코드”와 “상품명” 필드만을 추출 • 필드의 위치는 필드명이 나열된 순서로 재배열되어 추출 • Select * From 판매일지 Where 판매일 >= #2004-2-1# • “판매일지” 테이블에서 “판매일”이 2004년 2월 1일보다 큰 레코드들을 추출 • “판매일” 날짜형 데이터
Select * From 상품 Where 재고수량 < 10 Order by 재고수량 • “상품” 테이블에서 “재고수량”이 10보다 작은 레코드를 “재고수량” 필드의 내림차순으로 정렬하도록 추출 • Select * From Products Where ProductName Like “*주스*” • “Product” 테이블의 “ProductName” 필드의 내용이 “주스”라는 문자를 포함한 레코드를 추출 (Like 연산자) • Select * From Products Where UnitPrice Between 10000 and 20000 • “Product” 테이블의 “UnitPrice” 필드값이 10000~20000 사이의 레코드를 추출
SQL 사용의 예 • DBGrid (이름) DBGrid1, DataSource: Data1 • Data (이름) Data1, Visible: False • TextBox (이름) Text1, MultiLine: True, ScrollBars: 2- 수직, Text: 비워둠 • CommandButton (이름): Command1, Caption: 실행 • StatusBar (이름): StatusBar1 속성[패널] index=1, AutoSize: “1-sbrSpring”
데이터베이스 파일 연결 Private Sub Form_Load() Data1.DatabaseName = "상점관리.mdb" Data1.RecordSource = "Select * From Products" Text1.Text = "Select * From Products" StatusBar1.Panels(1).Text = "SQL문을 입력한 후 [실행]단추를 누르세요." End Sub [실행] 버튼 관련 Private Sub Command1_Click() On Error GoTo Err_rtn Data1.RecordSource = Text1.Text Data1.Refresh StatusBar1.Panels(1).Text = "검색된 레코드수 : " & Data1.Recordset.RecordCount & " 개" Exit Sub Err_rtn: MsgBox Err.Description End Sub