ADO ASP Guide Ver 1.0 (C)CopyLeft Park, Jinnam. 2003,. Open Source Project
' ADO ASP Guide Ver 1.0 (C)CopyLeft Park, Jinnam. 2003,. Open ASPDocument Project v 1.0
'

' ASP에서 사용하기 위해 필요한 Active DataBase Object의 개체들
'   Connection
'   RecordSet

' ADO ASP Guide v1.0에선 주로 사용되는 개체인 Connection개체와 RecordSet개체에 대해서만 다룬다
' Connection개체와 Recordset개체의 Property와 Method중에서 필수적으로 사용될것으로 보이는
' 것에 대해서만 다룬다


' ADO는 VB에서 Cursor란 것을 가지고 Recordset의 관리와 Transaction기능등의 MiddleWare역할을 수행하지만
' ASP에선 Web의 특성상 ASP Script의 실행이 끝날때까지만 존재한다
' 그래서 Property와 Method의 사용법이 다르다


' Connection개체 - DataBase Server와의 연결작업을 수행하고 연결을 유지하는 역할을 한다
'                  Recordset 개체의 ActiveConnection 프로퍼티에 대입되어 쿼리를 실행할 때에
'                  이 연결을 통해 쿼리문장을 서버로 전달하고 쿼리 결과를 전달받는다
' Recordset개체  - 쿼리 결과(Record or Row)를 갖고 있고 ASP Script의 실행이 끝나면서 소멸된다


' Connection개체
'
' Connection개체의 Property
'
'   ConnectionString -  연결문자열이라고 한다
'                       local server의 경우, 간단하게 dsn만을 가지고 연결하기도 하고,
'                       remote server의 경우, ip를 함께 지정하기도 하고,
'                       여러가지 연결에 필요한 문자열을 가지고 연결하기도 한다
'
' Connection개체의 Method
'
'   Close - DataBase 연결을 닫는다
'   Execute - DataBase에 Query를 제출한다
'             dbconn.Execute strQuery :- Query문장을 실행한다
'             % Recordset을 사용하지 않고
'               즉, Query를 실행만하고 Recordset을 만들지 않을때 사용한다
'               Web에서 Form으로 넘겨받은 값을 Insert, Update, Delete할때 사용한다
'             %% Open 메소드로 Server에 연결한 후에 사용한다
'   Open - DataBase에 연결한다
'          dbconn.Open ConnectionString


' Connect개체의 사용예제
'
'
'Set dbconn = New ADODB.Connection
'
'연결문자열
'   dsn을 만들때 입력하는 내용들이다
'   MySQL ODBC Driver Ver 3.51을 제어판의 ODBC에 등록하면 "MySQL ODBC 3.51 Driver"로 설정된다
'   이이름을 그대로 입력한다
'   형식은 driver={string};다
'   server는 local의 경우엔 생략, 원격지 서버의 경우엔 Remote IP Address
'   uid는 프로그램에서 사용할 DataBase Logon ID
'   pwd는 프로그램에서 사용할 DataBase Logon Password
'   database는 MySQL의 DataBase Area Name
'   따옴표안에 별도의 작은따옴표없이 모두 ;으로 구분하여 입력한다
'   변수를 사용했기 때문에 문자열 결합연산자도 사용했다
'
' 연결문자열로 (Server의 )DataBase에 연결한다
'dbconn.Open "driver={MySQL};uid=userid;pwd=passwd;database=testmysql"
'dbconn.Open "driver={MySQL};server=127.0.0.1;uid=userid;pwd=passwd;database=testmysql"
' Data Source Name으로 (Server의 )DataBase에 연결한다
'dbconn.Open "dsn=testdsn"
'dbconn.Open "server=127.0.0.1;dsn=testdsn"


' Recordset 개체
'
'
' 참고 - Enum Notice(Enum-연속된 일련의 값)
'
'   CursorType - 다음의 CursorTypeEnum값중 하나다
'                % adOpenForwardOnly 0 :- 읽기전용이며 전진전용으로 ASP에서 사용하기에 좋다
'                                         %% Recommended
'                  adOpenKeyset      1 :- 읽기전용이 아닌 쓰기(추가, 수정, 삭제)가능
'                                         전후진 가능(MovePrevious and MoveNext etc)
'                                         다른 사용자에 의한 쓰기(추가, 수정, 삭제)를 볼 수 없다
'                  adOpenDynamic     2 :- 쓰기 가능, 전후진 가능
'                                         다른 사용자에 의한 쓰기를 볼 수 있으나,
'                                         Server의 부하가 크다
'                                         소수의 이용자가 있는 Server라면 모를까?!
'                  adOpenStatic      3 :- 쓰기 가능, 전후진 가능
'                                         다른 사용자에 의한 쓰기를 볼 수 없다
'                                         CursorLocation을 Client로 해야 사용 가능하다
'                                         쿼리 결과를 전송받은후 Client의 메모리와 리소스를
'                                         사용하며 Client상에서 작업하여 업데이트(추가, 수정,
'                                         삭제)하는 작업형태에 알맞다
'                                         %% Recommanded
'   LockType - 다음의 LockTypeEnum값중 하나다
'              % adLockReadOnly        1 :- Recordset을 읽기전용으로 만든다
'                                           %% Recommanded
'                adLockPessimistic     2 :- 비관적 Lock
'                                           Server의 Data를 쓰기금지 즉,
'                                           다른 사용자에게 읽기전용으로 만들어 놓고
'                                           업데이트 작업을 할때 지정한다
'                adLockOptimistic      3 :- 낙천적 Lock
'                                           업데이트가 수행될때만 쓰기금지 상태로 만들고
'                                           업데이트가 끝나면 다시 쓰기가능이 된다
'                                           동시에 여러명이 DataBase의 Data를 공유하며
'                                           업데이트 작업을 하기에 유리하다
'                adLockBatchOptimistic 4 :- adLockOptimistic과 유사하다
'                                           단, Batch로(일괄적으로 한꺼번에)
'                                           업데이트하기에 유리하다
'                                           %% UpdateBatch 메소드 사용시에 지정한다
'                                           %% Recommanded
'              %% 레코드(Record) 또는 로우(Row)를 한건씩 업데이트할거라면 adLockOptimistic으로
'                 한꺼번에 업데이트할거라면 adLockBatchOptimistic으로 지정하는 것이 유리하다
'   CommandType - 다음의 CommandTypeEnum값중 하나다
'                           adCmdText          1 - 쿼리 문자열은 일반적인 문자열의 형태
'                           adCmdTable         2 - 쿼리 문자열이 테이블의 이름만 포함하고 있다
'                           adCmdStoredProc    4 - 서버에 저장된 저장프로시저
'                           adCmdUnknown       8 - 여러가지 방법으로 쿼리 문자열을 실행
'                           adCmdFile        256 - 파일로부터 Recordset개체 만들기
'                           adCmdTableDirect 512 - 테이블의 내용(Data)을 가져오기 위해
'                                                  OLE DB 공급자의 인터페이스를 사용
'
'
' Recordset개체의 Property
'
'   ActiveConnection - 현재의 연결로 설정된 Connection개체다
'                      위의 예에서 사용된 conn같은 것
'   BOF - Boolean값(True or False)을 취한다
'         현재의 레코드포인터가 Recordset의 처음에 와있음을 나타낸다
'         처음은 첫번째 레코드가 아닌 첫번째 레코드의 앞이다
'   EOF - Boolean값(True or False)을 취한다
'         현재의 레코드포인터가 Recordset의 마지막에 와있음을 나타낸다
'         마지막은 마지막 레코드가 아닌 마지막 레코드의 뒤다
'   % BOF와 EOF는 레코드가 하나도 없음(둘다 True)을 나타내기도 하며,
'     EOF는 레코드가 추가될 위치를 가리키기도 한다
'
'
' Recordset개체의 Method
'
'   AddNew  - 비어있는 빈레코드를 맨뒤에 추가한다
'   MoveNext - 다음 레코드로 이동한다
'   % 흔히 레코드 포인터라고 부르는게 이동된다
'   % 이동할 위치에 레코드가 없으면 뒤로 이동시엔 EOF Property가 True가 된다
'
'   Open    - Recordset개체에 Query의 실행결과를 담는다
'             % 형식 :- rs.Open Query, Connection_obj, CursorType, LockType, Options
'                       % Options 매개변수엔
'                         CommandTypeEnum값과 ExecuteOptionEnum값의 조합이 들어간다
'
'
' Recordset개체의 사용예제
'
' 목록
'rs.Open "SELECT * FROM Table_Name WHERE sex=1 LIMIT 1, 10", dbconn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs.Open "SELECT * FROM Table_Name WHERE sex=1 LIMIT 1, 10", dbconn, 0, 1, 1
'
'while (rs.MoveNext())
'{
'   Response.Write rs("name")
'   Response.Write rs("age")
'   Response.Write rs("sex")
'}
'
' 등록(FORM)
'dbconn.Execute "INSERT INTO table_name VALUES('name', age, sex)
'
' 조회
'rs.Open "SELECT * FROM Table_Name WHERE id=? LIMIT 1, 10", dbconn, adOpenForwardOnly, adLockReadOnly, adCmdText
'rs.Open "SELECT * FROM Table_Name WHERE id=? LIMIT 1, 10", dbconn, 0, 1, 1
'If rs.BOF And rs.EOF Then
'   레코드가 하나도 없는 경우(이경우에 현재레코드는 첫번째레코드)
'Else
'   Response.Write rs("name"), rs("age"), rs("sex")
'End If
'
' 수정(FORM)
'dbconn.Execute "UPDATE table_name SET name='name', age=age, sex=sex WHERE id=?"
'
' 삭제
'dbconn.Execute "DELETE FROM table_name WHERE id=?"

+ Recent posts