많은 ASP 프로그래머는 데이터베이스 쿼리를 실행한 다음 쿼리 결과를 HTML 테이블에 표시한 경험이 있습니다. 보통 우리는 이렇게 합니다:
| 다음은 인용문입니다: <% '연결/레코드 세트 생성 '레코드세트 개체에 데이터를 채웁니다. %> <표> <% rs.EOF가 아닌 동안 수행 %> <TR> <TD ><%=rs(Field1)% ></TD> <TD ><%=rs(Field2)% ></TD> . </TR> <% rs.다음으로 이동 루프 %> </TABLE> |
쿼리 결과가 많으면 처리할 Response.Write 문이 많아 서버에서 ASP 스크립트를 해석하는 데 많은 시간이 걸립니다. 모든 출력 결과를 긴 문자열(from to)에 넣으면 됩니다. , 그러면 서버는 Response.Write 문을 한 번만 해석하면 훨씬 더 빨라질 것입니다. Microsoft의 일부 유능한 직원이 이 아이디어를 현실로 만들었습니다. (이 기능은 ADO 2.0 이상에서만 사용할 수 있습니다. 아직 이전 버전을 사용하고 계시다면 최신 버전으로 업그레이드 해주세요)
GetString 메서드를 사용하면 하나의 Response.Write만 사용하여 모든 출력을 표시할 수 있습니다. 이는 레코드 집합이 EOF인지 확인할 수 있는 DO... LOOP 루프와 같습니다.
GetString의 사용법은 다음과 같습니다(모든 매개변수는 선택사항입니다).
문자열 = recordset.GetString(StringFormat, NumRows, ColumnDelimiter, RowDelimiter, NullExpr)
Recordset의 결과에서 HTML 테이블을 생성하려면 GetString의 5개 매개 변수 중 3개만 고려하면 됩니다.
ColumnDelimiter(레코드세트의 열을 구분하는 HTML 코드), RowDelimiter(레코드세트의 행을 구분하는 HTML 코드) 및 NullExpr(현재 레코드가 비어 있을 때 생성되어야 하는 HTML 코드). 아래 HTML 테이블 생성 예에서 볼 수 있듯이 각 열은...로 구분되고, 각 행은...로 구분됩니다. 예제 코드:
| 다음은 인용문입니다: <%@ LANGUAGE=VBSCRIPT %> <% Option Explicit '좋은 코딩 기술 'DB에 연결 설정 딤 콘 conn = Server.CreateObject(ADODB.Connection) 설정 conn.Open DSN=노스윈드; '레코드세트 생성 딤머 rs = Server.CreateObject(ADODB.Recordset) 설정 rs.Open SELECT * FROM table1, 연결 '우리의 하나의 큰 문자열을 저장 희미한 strTable strTable = rs.GetString(,,</td><td>,</td></tr><tr><td> , ) %> <HTML> <본문> <표> <TR><TD> <% 응답.쓰기(strTable) %> </TR></TD> </TABLE> </BODY> </HTML> <% '대청소! RS.닫기 설정자=아무것도 없음 연결.닫기 conn = 없음 설정 %> |
strTable 문자열은 SELECT * FROM table1의 결과에서 생성된 HTML 테이블의 코드를 저장하는 데 사용됩니다.
HTML 테이블의 각 열 사이에는 HTML 코드가 있고, 각 행 사이에는 HTML 코드가 있습니다. GetString 메서드는 올바른 HTML 코드를 출력하고 이를 strTable에 저장하므로 출력하려면 Response.Write 한 줄만 필요합니다. 데이터 세트 All records of . 쿼리 결과가 다음 행과 열을 반환한다고 가정하여 간단한 예를 살펴보겠습니다.
| 다음은 인용문입니다: Col1 Col2 Col3 1열 밥 스미스 40 행1 에드 프랭크 43 Row1 수 보이드 42 |
GetString 문에서 반환되는 문자열은 다음과 같습니다.
| 다음은 인용문입니다: 밥</td ><td >스미스</td ><td >40</td ><td ></td ></tr ><tr >< TD >에드... |
이 문자열은 길고 지저분해 보이지만 원하는 HTML 코드입니다. (손으로 작성한 HTML 코드에서는 이 항목을 그 뒤에 넣습니다. 이는 형식 지정 문자열에 이러한 테이블의 머리글과 바닥글에 필요한 문자열이 포함되어 있지 않기 때문입니다.)