ASP에는 가장 중요한 기능 중 하나가 있는데, 이는 데이터베이스에 매우 쉽게 연결할 수 있다는 것입니다. 일반적으로 Access 또는 SQL 데이터베이스에 연결됩니다. Access는 시작하기 가장 쉽고 Access가 컴퓨터에 이미 설치되어 있을 수 있으므로 다음 예에서는 Access를 사용합니다. ASP와 Access 데이터베이스를 연결하는 핵심 기술 방법을 배우고 SQL Server를 사용하기 시작하면 두 가지 모두에 필요한 핵심 기술이 기본적으로 동일하다는 것을 알게 될 것입니다.
데이터 원본 이름(DSN) 만들기
제어판에서 데이터베이스에 대한 시스템 DSN을 생성하여 ASP에서 데이터베이스를 사용할 수 있도록 만들 수 있습니다. 로컬 컴퓨터에 여러 DSN을 만들 수 있으며, 각 DSN은 사용하는 다른 데이터베이스에 해당합니다. DSN을 설정한 후 로컬 서버에서 페이지를 테스트할 수 있습니다. 귀하의 웹 사이트가
ISP에 의해 제공되고 ISP가 ASP를 지원하는 경우 데이터베이스에 대한 DSN을 생성하기 위한 GUI 인터페이스를 제공할 가능성이 높습니다.
Windows 95/98/NT에서는 제어판을 열고(시작 메뉴 -> 설정 -> 제어판) ODBC를 두 번 클릭하여 들어갑니다.
시스템 DSN을 선택하고 추가를 클릭합니다.
"Microsoft Access Driver"를 선택하고 마침을 클릭합니다.
데이터 소스 이름을 입력합니다. 이는 데이터베이스에 부여하는 이름이므로 별칭과 동일한 작업입니다.
데이터베이스 선택에서 선택 버튼을 클릭하여 생성한 Access 데이터베이스가 저장된 시스템의 위치를 찾아보세요.
확인을 클릭하세요
이제 새 DSN이 시스템 DSN에 표시되며 로컬 서버에서 사용할 수 있습니다.
데이터베이스에 연결 DSN 없는 연결을 설정하고 데이터베이스에 연결하는 방법을 살펴보겠습니다. DSN을 만들 때 데이터베이스에 대한 일부 정보가 이미 저장되어 있으므로 데이터베이스 유형, 이름, 저장 위치, 선택적 속성, 사용자 및 비밀번호와 같은 일부 정보를 사용해야 할 때마다 이를 반복할 필요가 없습니다.
DSN 없는 연결을 생성하려면 동일한 정보를 제공해야 합니다. 다음 예에서는 products라는 데이터베이스에 대해 DSN 없는 연결을 설정하는 방법을 보여줍니다.
<%
StrConnect = "드라이버={Microsoft Access Driver(*.mdb)}; DBQ=C:dbproducts.mdb"
objConn = Server.CreateObject("ADODB.Connection") 설정
objConn.OpenStrConnect
%>
두 번째 줄은 데이터베이스의 드라이버와 물리적 경로를 정의합니다. DSN-less 연결을 사용하려면 실제 파일 위치(절대 경로)를 알아야 합니다. Server.MapPath는 찾기 어려운 실제 액세스 경로를 찾기 위해 호스팅 서비스를 사용하는 모든 사람에게 간단한 작업 환경을 제공합니다.
products라는 시스템 DSN을 생성한 경우 연결 코드는 다음과 같아야 합니다.
<%
objConn = Server.CreateObject("ADODB.Connection") 설정
objConn.Open "제품"
%>
이제 데이터베이스가 열렸으니 무엇을 할 수 있습니까? 물론 가장 먼저 할 일은 데이터베이스에서 일련의 레코드를 읽고 이를 페이지에 넣는 것입니다. 하지만 그 전에 레코드세트가 필요합니다.
레코드세트
레코드세트는 특수 데이터베이스 테이블에 저장된 모든 정보입니다. 따라서 이 레코드세트를 열면 테이블에 있는 모든 행과 열의 내용에 액세스할 수 있습니다. 데이터베이스 연결을 열어야 하는 것처럼 이 레코드 세트를 열어야 합니다. 해당 명령은 비슷합니다.
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "downloadable", strConnect, 0,1,2
제품 데이터베이스의 strConnect에 정의된 downloadable table이라는 레코드세트(objRec)를 생성합니다. Recordset open을 사용하면 이 테이블을 반복하여 화면에 모든 내용을 표시할 수 있습니다. 또는 특정 필드의 내용을 테스트하거나 관심 있는 내용을 화면에 작성할 수도 있습니다.
각 열은 필드를 나타냅니다. 따라서 데이터베이스 테이블이 다음과 같은 경우:
제품 ID | SKU | 이름 | 파일 |
1 | PR12345 | 제품 A | install_a.exe |
2 | PR12346 | 제품 B | Install_b.exe |
그런 다음 ProductID, SKU, 이름 및 파일 필드의 내용이 있습니다. 테이블에는 가격이나 제품(항목) 설명과 같은 많은 항목이 포함될 수 있는 추가 필드가 많이 있을 가능성이 높습니다. 그러나 이 개략도는 데이터베이스 테이블의 가장 기본적인 개념을 제공할 수 있습니다.
레코드세트를 사용하면 레코드세트의 내용을 채우는 것이 매우 쉽습니다. 데이터베이스를 반복하여 모든 정보를 화면에 인쇄하려면 다음을 수행할 수 있습니다.
objRec.EOF가 아닌 동안
' 파일의 끝에 도달하지 않은 한 이 작업을 수행하라는 메시지가 표시됩니다.
Response.WriteobjRec("제품 ID") & ", "
Response.WriteobjRec("SKU") & ", "
Response.WriteobjRec("이름") & ", "
Response.WriteobjRec("파일") & "<BR>"
objRec.MoveNext
향하게 하다;
이러한 방식으로 루프를 사용하지 않은 경우에도 이 코드를 읽어 쉼표로 구분된 문자열에 정보를 쓸 수 있으며, 데이터베이스 테이블에 새 행이 생성되면 새 행을 생성하여 해당 행을 테이블에 기록할 수 있습니다. 동일한 방법을 사용하여 HTML 테이블에 데이터를 쓸 수 있습니다. Response.Write를 사용하여 TABLE 태그를 추가할 때 명심해야 할 몇 가지 사항은
HTML 태그와 따옴표로 묶인 내용입니다.
태그나 콘텐츠에서 따옴표를 사용하는 경우 반드시 큰따옴표를 사용하세요.
<글꼴 크기=""+2"">.
&를 사용하여 변수와 HTML/컨텐츠 정보를 연결하여 제품 데이터베이스에도 OS라는 필드가 포함되어 있다고 가정합니다. 다시 한 번, 이 필드에 저장된 데이터는 Windows NT, Windows 95, Windows 98, Windows, Mac, Unix 또는 Linux일 수 있다고 가정해 보겠습니다.
다음으로 화면에 인쇄해야 하는 필드와 무시하려는 필드를 확인할 수 있습니다. 또는 하나의 형식을 사용하는 필드와 다른 색상을 사용하는 등의 다른 필드를 사용하는 필드를 선택할 수도 있습니다.
간단한 If... 루프를 사용하면 데이터베이스를 더 효과적으로 제어할 수 있습니다. 먼저 Windows NT 제품에 대한 기록을 인쇄해 보겠습니다.
<TABLE BORDER=0 WIDTH=600>
<TR><TD COLSPAN=4 ALIGN=CENTER><FONT SIZE="+1"<<B>Windows NT 제품</B></FONT></TD></ TR>
<%
NOT objRec.EOF If objRec("OS") = "Windows NT" THEN '은
Response.Write "<TR><TD BGCOLOR=""#FFFF66"">" & objRec("ProductID") & "
기준을 지정합니다.
</TD>"
Response.Write "<TD>" & objRec("SKU") & "</TD>"
Response.Write "<TD>" & objRec("이름") & "</TD>"
Response.Write "<TD>" & objRec("File") & "</TD></TR>"
end if
objRec.MoveNext
웬드
%>
</TABLE>
레코드 추가 일단 레코드세트와 ASP를 사용하기 시작하면 네트워크를 통해 데이터베이스에 데이터를 추가할 수 있기를 정말로 원할 것입니다. 예를 들어 웹 방문자가 자신의 견해와 의견을 남기도록 해야 하거나 관리 업데이트를 수행하려는 경우 콘텐츠를 추가하는 것이 중요합니다.
다음 코드는 책 이름과 저자가 포함된 데이터베이스 테이블과 관련된 레코드세트를 엽니다. 이전에 본 적이 있을 수도 있지만 이번에는 마지막 세 가지 사양이 서로 다른 포인터 유형을 정의합니다. adOpenStatic, adLockOptimistic, adCmdTable:
<% ' 데이터베이스 연결 코드는 여기에 표시되지 않습니다.
objRec = Server.CreateObject("ADODB.Recordset") 설정
objRec.Open "책", bookdb, adOpenStatic, adLockOptimistic, adCmdTable
%>
(adovbs.inc의 복사본 파일을 사용하지 않는 경우 세 번째 줄은 objRec.Open "books", bookdb, 3,3,2여야 합니다.)
이제 레코드 세트는 데이터를 수신할 준비가 되었습니다. 추가할 내용을 알려줍니다. 이 경우 테이블에서 strBookTitle 및 strBookAuthor 변수를 가져온다고 가정해 보겠습니다. 우리 테이블 books에는 Title과 Author라는 두 개의 필드가 있으므로 다음 명령문을 사용하여 새 레코드를 추가할 수 있습니다
.
objRec.AddNew
ObjRec("제목") = strBookTitle
objRec("저자") = strBookAuthor
objRec.업데이트
%>
strBookTitle과 strBookAuthor는 값을 나타내며 일반적으로 사용자가 액세스합니다. 추가 기능만 테스트하려는 경우 제목과 작성자에 대한 변수를 추가할 수 있습니다. 따옴표를 사용하는 것만 기억하세요. 처음 사용하는 경우 업데이트가 발생하는지 확인하기 위해 즉시 데이터베이스를 열 것입니다.
레코드세트 유형 표시된 objRec.Open 예제의 끝에는 0, 1, 2라는 단어가 있습니다. 이 숫자는 다양한 포인터 유형을 나타냅니다. 사용하는 유형은 사용 용도에 따라 다릅니다. 예를 들어 레코드를 수정하거나 추가할 필요가 없는 경우 잠금 유형을 사용할 수 있습니다. 데이터베이스를 수정하거나 업데이트하려는 경우 선택하는 유형이 달라집니다.
0,1,2는 실제로
adOpenForwardOnly, adLockReadOnly, adCmdTable을 나타냅니다.
물론 서버에 이미 adovbs.inc의 백업이 있는 경우 숫자를 사용하지 않고 이러한 단어를 직접 사용할 수도 있습니다. adovbs.inc에는 이러한 세 가지 상수와 기타 상수 목록이 포함되어 있습니다.