ASP 강의 6: ASP와 데이터베이스 (1)
저자:Eve Cole
업데이트 시간:2009-05-30 19:55:05
이전 강의에서는 ASP의 기본 내용을 배웠습니다. 이러한 지식을 유연하게 활용하면 이미 ASP를 사용하여 웹 사이트를 구축할 수 있습니다. 그러나 일반적으로 말하면, 웹 페이지 방문자 수와 같은 소량의 데이터는 텍스트 파일에 저장할 수 있지만 실제 응용 프로그램에서는 필요한 데이터가 데이터베이스에서 분리될 수 없기 때문에 실제적이고 완전한 웹 사이트는 데이터베이스와 분리될 수 없습니다. 저장된 것은 이보다 훨씬 더 많습니다. 이러한 데이터는 서로 관련되어 있는 경우가 많으므로 데이터베이스를 사용하여 이러한 데이터를 쉽게 쿼리하고 업데이트할 수 있습니다. 데이터베이스에는 Fox 데이터베이스(.dbf), Access 데이터베이스(.mdb), Informix, Oracle 및 SQL Server 등 다양한 종류가 있습니다. 이번 강의에서는 Microsoft Access 데이터베이스와 SQL Server 7.0을 예로 들어 보겠습니다. ASP에서 데이터베이스에 액세스하는 방법을 설명합니다. ASP를 선택하는 이유는 무엇입니까? 통계에 따르면 SQL Server 7.0은 현재 가장 빠르고 비용 효율적인 데이터베이스이며 www.8848.net, www.dell.com, www.hotbot.com과 같은 많은 대규모 웹 사이트가 ASP 기술을 사용하여 생성되므로 ASP입니다. 비교적 익히기 쉽고 매우 실용적인 기술이므로 접근하고 이해한 다음 자신감과 용기를 가지고 사용해야 합니다.
추가 연구 전에 어떤 준비를 해야 합니까?
1. 데이터베이스를 접해 본 적이 없다면 먼저 Office에 Microsoft Access를 설치하고 데이터베이스에 대한 기본 지식을 배우는 것이 좋습니다.
2. Microsoft SQL Server 7.0을 설치하는 것이 가장 좋습니다. 한번 설치하면 별다른 설정 없이 바로 사용이 가능합니다. 참고로 Desktop 버전은 Windows 9.x에 설치해야 하며, 7.0 이전 버전은 NT Server에만 설치 가능합니다.
3. 다음에 설명할 내용에는 MDAC(Microsoft Data Access Components)라는 구성 요소가 필요합니다. 이 구성 요소는 ASP에 이미 포함되어 있습니다. 관련 내용에 대해 자세히 알아보거나 최신 버전을 다운로드하려면 http://www. microsoft.com/data.
1. 데이터베이스와의 연결 설정 공식적으로 시작하기 전에 ADO(ActiveX Data Objects)에 대해 소개하겠습니다. 이 개념을 처음 접하는 경우 ADO를 ASP와 데이터베이스 간의 브리지로 생각하면 됩니다.
(1) Microsoft Access 데이터베이스와 연결을 설정하는 방법 1: 예 wuf40.asp
<% @LANGUAGE = VBScript %>
<% ' wuf40.asp
옵션 명시적
희미한 Cnn, StrCnn
' 1 - 연결 객체 생성
Cnn = Server.CreateObject("ADODB.Connection") 설정
StrCnn = "드라이버={Microsoft Access Driver(*.mdb)}; DBQ=" & Server.MapPath("asp") & "NorthWind.mdb;"
'2 - Connection 개체의 Open 메서드를 사용하여 데이터베이스를 엽니다.
Cnn.StrCnn 열기
Response.Write Server.MapPath("asp") & "NorthWind.mdb;" & "<br>"
Response.Write "데이터베이스 연결 성공: " & Cnn.State & "<br>"
'3 - Connection 개체의 Close 메서드를 사용하여 연결을 닫습니다.
Cnn.닫기
Response.Write "데이터베이스가 닫혔습니다: " & Cnn.State
'4 - 리소스를 해제하기 위해 메모리에서 연결 개체를 삭제합니다.
Cnn = 없음 설정
%>
Northwind.mdb는 Microsoft Access97과 함께 제공되는 샘플 데이터베이스입니다. 일반적으로 "Microsoft OfficeOfficeSamples" 디렉터리에 있으며 이 파일을 웹 서버의 해당 디렉터리에 복사할 수 있습니다. 예를 들어 C :InetPubhomeasp에 배치합니다.
여기서 Server 개체의 MapPath 메서드는 지정된 가상 경로를 실제 파일 경로로 변환하며 최종 결과는 C:InetPubhomeaspNorthwind.mdb와 유사합니다.
방법 2: OLE DB를 사용하여 Microsoft Access 연결을 만듭니다. 주요 부분은 다음과 같습니다.
Cnn = Server.CreateObject("ADODB.Connection") 설정
StrCnn = "공급자 = Microsoft.Jet.OLEDB.4.0; 데이터 원본 = C:InetpubhomeaspNorthwind.mdb"
Cnn.StrCnn 열기
(2) SQL Server 데이터베이스와 연결을 설정하는 방법 1: OLE DB를 사용하여 SQL Server에 연결합니다. 자세한 내용은 wuf41.asp 루틴을 참조하세요.
Cnn = Server.CreateObject("ADODB.Connection") 설정
StrCnn = "공급자=sqloledb; 사용자 ID=sa; 비밀번호=; 초기 카탈로그=pubs; 데이터 소스=ICBCZJP"
Cnn.StrCnn 열기
초기 카탈로그 뒤에 데이터베이스 이름을 지정하고 데이터 소스(즉, 네트워크 → 속성 → ID의 컴퓨터 이름) 또는 IP 주소(DNS 서비스를 설치해야 함) 뒤에 컴퓨터 이름을 지정합니다.
방법 2:
Cnn = Server.CreateObject("ADODB.Connection") 설정
StrCnn = "드라이버={SQL Server};서버=ICBCZJP;UID=sa;PWD=;데이터베이스=pubs"
Cnn.StrCnn 열기
위의 두 가지 방법 외에도 많은 기사와 자료에서 소개된 가장 고전적인 방법인 ODBC를 사용하여 연결을 생성하는 방법도 사용할 수 있습니다. 이는 먼저 웹 서버 제어판의 "ODBC 데이터 소스"에서 연결을 설정한 다음 ASP에서 "StrCnn ="DSN=ADOCnn; UID = sa;PWD=;Database=pubs""와 유사한 연결 문자열을 사용하는 것입니다. . 여기서는 자세히 소개하지 않겠습니다. 첫째, 이는 최선의 방법이 아닙니다. 둘째, 다른 자료에서도 이 방법을 도입했습니다.
또한 관심이 있는 경우 wuf42.asp 루틴을 다운로드하여 Connection 개체의 ConnectionTimeout 및 ConnectionString 속성을 사용하는 방법을 확인할 수 있습니다.
2. 데이터베이스는 여기에서 시작됩니다. 데이터베이스에 이미 존재하는 데이터 검색 이제 귀하는 이미 가장 기본적인 데이터베이스 지식을 갖고 있고 Microsoft Access를 사용하여 Northwind.mdb에서 "Shipper" 테이블을 열고 다음을 참조하는 방법을 알고 있다고 가정합니다. 테이블에 저장된 데이터. 이제 문제는 ASP를 사용하여 이 데이터를 브라우저에 표시하는 방법입니다. 다음은 세 가지 방법입니다.
특별 알림: 데이터베이스 기반이 약한 경우 두 번째 방법만 사용할 수 있으면 너무 멀리 가지 않으려고 욕심을 내지 마십시오. 기억하다!
방법 1: Connection 개체만 사용합니다. 예 wuf43.asp
<% @LANGUAGE = VBScript %>
<% ' wuf43.asp
옵션 명시적
'이 문장은 매우 중요합니다. 표시되는 데이터가 클라이언트에 캐시된 데이터가 아닌지 확인할 수 있습니다.
'하지만 최신 데이터는 서버 측에서 언제든지 업데이트됩니다.
응답.만료 = 0
'1부: 연결 설정
희미한 Cnn, StrCnn
Cnn = Server.CreateObject("ADODB.Connection") 설정
StrCnn = "공급자 = Microsoft.Jet.OLEDB.4.0; 데이터 원본 = C:InetpubhomeaspNorthwind.mdb"
Cnn.StrCnn 열기
'2부: Connection 개체의 Execute 메서드를 사용하여 레코드세트 가져오기
희미한 StrSQL, rsTest
'다음은 이번 강의에서 자세히 소개하지 않는 SQL문(구조화된 쿼리문)입니다.' 기본적인 사용법은 비교적 간단하니 한 번 배워보시면 익히실 수 있습니다.
'이 문장은 캐리어 테이블에서 모든 데이터를 선택한다는 의미입니다.
StrSQL = "* 배송업체에서 선택"
rsTest = Cnn.Execute(StrSQL) 설정
%>
<HTML>
<본문>
<% '3부: 획득한 레코드 세트를 브라우저에 표시
'레코드 끝까지 반복 - 한 줄씩 표시, 레코드별로 표시
rsTest.EOF가 아닌 동안 수행
'다음 두 줄은 동일한 효과를 갖습니다. 즉, rsTest("Shipper ID")는 rsTest(0)와 동일합니다.
Response.Write rsTest("배송업체 ID") & " " & rsTest("회사 이름") & " " & rsTest("전화") & " " & "<BR>"
'Response.Write rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
'다음 레코드로 이동 - 이 문장은 생략하면 안 됩니다. 그렇지 않으면 무한 루프에 빠지게 됩니다.
rsTest.MoveNext
고리
'파트 4: 전장 청소
Cnn.닫기
rsTest = 없음 설정: Cnn = 없음 설정
%>
</BODY>
</HTML>
이 예제는 매우 간단합니다. 세 번째 부분에서는 데이터베이스의 일반적인 출력 스타일로 데이터를 보여주며, 이전에 배운 지식을 참조하고 테이블과 색상을 추가하여 출력 결과를 아름답게 만들 수 있습니다.
주니어가 아닌 사용자는 wuf44.asp를 참조하여 Execute 메서드의 전체 사용법을 확인할 수 있습니다.
방법 2: Recordset 개체 만들기 - 초보자는 이 방법만 익히면 된다는 점을 기억하세요.
예: wuf45.asp, 다른 부분은 wuf43.asp와 동일하며 핵심은 프로그램의 두 번째 부분에 있습니다.
'2부: RecordSet 개체를 생성하여 레코드세트 가져오기
희미한 StrSQL, rsTest
'레코드세트 객체 생성
rsTest = Server.CreateObject("ADODB.Recordset") 설정
StrSQL = "통신사 ID, 전화번호, 회사명을 선택하세요. 통신사에서 전화번호 = '(503) 555-9931'"
'Cnn 연결에 Recordset 개체를 연결합니다.
rsTest.ActiveConnection = Cnn 설정
'Recordset 개체의 Open 메서드를 사용하여 레코드세트를 엽니다.
rsTest.Open StrSQL
이제 wuf48.asp와 같은 Recordset 개체의 Open 메서드의 전체 사용법을 살펴보겠습니다.
<% @LANGUAGE = VBScript %>
<% ' wuf48.asp
옵션 명시적
응답.만료 = 0
%>
<!--#include 파일="adovbs.inc"-->
<%
'1부: 연결 설정
희미한 Cnn, StrCnn
Cnn = Server.CreateObject("ADODB.Connection") 설정
StrCnn = "공급자 = Microsoft.Jet.OLEDB.4.0; 데이터 원본 = C:InetpubhomeaspNorthwind.mdb"
Cnn.StrCnn 열기
'2부: RecordSet 개체를 생성하여 레코드세트 가져오기
희미한 rsTest
rsTest = Server.CreateObject("ADODB.Recordset") 설정
rsTest.Open "배송업체",Cnn,adOpenForwardOnly,adLockReadOnly,adCmdTable
%>
<HTML>
<본문>
<% '3부: 획득한 레코드 세트를 브라우저에 표시
rsTest.EOF가 아닌 동안 수행
Response.Write rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
rsTest.MoveNext
고리
'파트 4: 전장 청소
rsTest.Close: Cnn.Close
rsTest = 없음 설정: Cnn = 없음 설정
%>
</BODY>
</HTML>
분석하다:
1. 먼저 핵심 문장을 살펴보세요.
rsTest.Open "배송업체",Cnn,adOpenForwardOnly,adLockReadOnly,adCmdTable
첫 번째 매개변수는 테이블 이름(예: 화물 운송업체) 또는 SQL 문(예: wuf45.asp)일 수 있습니다.
두 번째 매개변수는 현재 연결을 지정합니다.
세 번째 매개변수는 공급자가 레코드세트를 열 때 사용해야 하는 커서 유형을 결정하는 CursorType을 나타냅니다. 이것은 앞으로만 이동하는 커서를 사용합니다.
네 번째 매개 변수는 공급자가 레코드 집합을 열 때 사용해야 하는 잠금(동시성) 유형을 결정하는 LockType을 나타냅니다. 여기에 읽기 전용을 지정하세요.
다섯 번째 매개 변수는 첫 번째 매개 변수와 관련되어 있습니다. 이 예에서 첫 번째 매개 변수는 테이블 이름이고 첫 번째 매개 변수가 SQL 문인 경우 첫 번째 매개 변수는 다음과 같이 adCmdText입니다.
rsTest.Open "* 이동통신사에서 선택",Cnn,adOpenForwardOnly,adLockReadOnly,adCmdText
대부분의 사람들은 이 다섯 가지 매개변수의 의미를 실제로 이해하지 못할 것 같습니다. 처음에는 그냥 복사해서 사용하면 됩니다. 익숙해지면 완벽해.
CursorType 및 LockType 두 매개변수는 아래에서 자세히 설명합니다. 데이터를 검색하려면 이 예에 따라 설정하기만 하면 됩니다.
2. 이러한 5개 매개 변수는 wuf46.asp와 같은 Recordset 개체의 속성을 사용하여 설정할 수도 있습니다.
'2부: RecordSet 개체를 생성하여 레코드세트 가져오기
희미한 rsTest
rsTest = Server.CreateObject("ADODB.Recordset") 설정
rsTest.ActiveConnection = Cnn
rsTest.CursorType = adOpenForwardOnly
rsTest.LockType = adLockReadOnly
rsTest.Open "배송업체", , , ,adCmdTable
3. 이 문장을 다시 보세요: <!--#include file="adovbs.inc"-->.
(1) adOpenForwardOnly, adLockReadOnly, adCmdText 등의 상수를 사용하므로 adovbs.inc 파일을 포함해야 합니다.
(2) adovbs.inc 파일은 일반적으로 Program FilesCommon FilesSYSTEMADO 디렉터리에 위치합니다. 웹 서버의 현재 디렉터리에 복사하면 됩니다. (이 파일은 본 강의의 다운로드 패키지에도 포함되어 있습니다.) .
(3) 이 파일을 메모장으로 열어서 살펴보시면 이 파일이 왜 필요한지 이해하실 수 있을 것입니다.
방법 3: Command 개체를 도입합니다. 이는 귀하가 능력이 있다는 전제하에 연구되어야 합니다.
<% @LANGUAGE = VBScript %>
<% ' wuf47.asp
옵션 명시적
응답.만료 = 0
%>
<!--#include 파일="adovbs.inc"-->
<%
'1부: 연결 설정
희미한 Cnn, StrCnn
Cnn = Server.CreateObject("ADODB.Connection") 설정
StrCnn = "공급자 = Microsoft.Jet.OLEDB.4.0; 데이터 원본 = C:InetpubhomeaspNorthwind.mdb"
Cnn.StrCnn 열기
'2부: Command 개체를 생성하여 레코드세트 가져오기
희미한 StrSQL, rsTest, cmdTest
'명령 객체 생성
cmdTest = Server.CreateObject("ADODB.Command") 설정
StrSQL = "SELECT MAX(수량) FROM 주문 세부정보"
cmdTest.CommandText = StrSQL
cmdTest.CommandType = adCmdText '명령 유형이 SQL 문임을 나타냅니다.
cmdTest.ActiveConnection = Cnn으로 설정
'레코드 세트를 얻으려면 Command 개체의 Execute 메서드를 사용하십시오.
rsTest = cmdTest.Execute 설정
%>
<HTML>
<본문>
<% '3부: 획득한 레코드 세트를 브라우저에 표시
rsTest.EOF가 아닌 동안 수행
Response.Write rsTest(0) & "<BR>"
rsTest.MoveNext
고리
'파트 4: 전장 청소
rsTest.Close: Cnn.Close
rsTest = 없음 설정: cmdTest=없음 설정: Cnn = 없음 설정
%>
</BODY>
</HTML>
Command 객체의 사용법은 앞으로 데이터베이스의 심층 프로그래밍에서 설명될 것입니다.
본 강의에서는 주로 데이터베이스에 연결하고 데이터베이스 데이터를 검색하는 방법을 소개합니다. 초보자는 필연적으로 다음 지식 포인트만 익히면 됩니다.
1. OLE DB를 사용하여 Microsoft Access 데이터베이스와 연결을 설정하는 방법
2. OLE DB를 사용하여 Microsoft SQL Server 데이터베이스와 연결을 설정하는 방법
3. Recordset 객체를 생성하여 데이터베이스에서 데이터를 검색하는 방법.