ASP에서 레코드 세트 개체의 getrows 및 getstring 사용 분석. 필요한 친구는 GetRows 메서드를 참조할 수 있습니다.
Recordset 개체의 여러 레코드를 배열에 복사합니다.
문법
다음과 같이 코드 코드를 복사합니다.
배열 = recordset.GetRows( 행, 시작, 필드 )
반환 값
2차원 배열을 반환합니다.
매개변수
행 검색할 레코드 수를 지정하는 선택적인 긴 표현식입니다. 기본값은 adGetRowsRest(-1)입니다.
Start 선택 사항(문자열 또는 긴 문자)은 GetRows 작업 시작 시 레코드의 책갈피를 계산합니다. 다음 BookmarkEnum 값도 사용할 수 있습니다.
상수 설명
AdBookmarkCurrent는 현재 레코드로 시작됩니다.
AdBookmarkFirst는 첫 번째 레코드부터 시작됩니다.
AdBookmarkLast는 마지막 레코드부터 시작됩니다.
필드는 선택 사항이며 단일 필드 이름, 순차 위치, 필드 이름 배열 또는 순차 위치 번호를 나타내는 변형 유형입니다. ADO는 이러한 필드의 데이터만 반환합니다.
설명하다
GetRows 메서드를 사용하여 Recordset의 레코드를 2차원 배열로 복사합니다. 첫 번째 첨자는 필드를 식별하고 두 번째 첨자는 레코드 번호를 식별합니다. GetRows 메서드가 데이터를 반환하면 배열 변수가 올바른 크기로 자동 조정됩니다.
Rows 매개 변수의 값을 지정하지 않으면 GetRows 메서드는 자동으로 Recordset 개체의 모든 레코드를 검색합니다. 사용 가능한 것보다 더 많은 레코드가 요청되면 GetRows는 사용 가능한 레코드 수만 반환합니다.
Recordset 개체가 책갈피를 지원하는 경우 레코드의 Bookmark 속성 값을 전달하여 GetRows 메서드가 데이터 검색을 시작할 레코드를 지정할 수 있습니다.
GetRows 호출에서 반환되는 필드를 제한하려면 Fields 매개 변수에 단일 필드 이름/번호 또는 필드 이름/번호 배열을 전달할 수 있습니다.
GetRows가 호출된 후 읽지 않은 다음 레코드가 현재 레코드가 되고, 더 이상 레코드가 없으면 EOF 속성이 True로 설정됩니다.
GetString 메서드
테이블을 표시하기 위해 데이터베이스를 쿼리할 때 Do While()...Loop 또는 For...Next 루프를 사용하여 테이블을 표시하는 경우가 많기 때문에 많은 양의 데이터를 쿼리하려는 경우 필연적으로 속도가 느려집니다. 이때 레코드셋 객체에서 제공하는 GetString() 메소드를 사용할 수 있다(ADO는 2.0으로 업그레이드되어야 한다).
문법
다음과 같이 코드 코드를 복사합니다.
Str=objRecordset.GetString(format,n,coldel,rowdel,nullexpr)
매개변수 설명:
objRecordset: 열린 레코드세트 개체.
형식: 선택 사항, 일반적으로 기본값을 사용합니다(기본값은 2).
n: 선택사항, 표시할 레코드 수, 기본값은 모두 표시하는 것입니다.
coldel: 선택 사항, 열 구분 기호
rowdel: 선택 사항, 행 구분 기호
nullexpr: 선택사항, 이 매개변수는 빈 필드를 채우는 데 사용됩니다!
GetString 메서드를 사용하면 하나의 Response.Write만 사용하여 모든 출력을 표시할 수 있습니다. 이는 레코드 집합이 EOF인지 확인할 수 있는 DO... LOOP 루프와 같습니다.
이 방법을 사용하면 RS 객체가 생성되고 해당 작업이 수행되는 한, 하나 이상의 레코드를 반환하든 심지어 비어 있는지 여부에 관계없이 while 또는 for 루프를 거치지 않고도 루프에서 문자열을 자동으로 출력할 수 있습니다. records, getstring 평소대로 작업합니다.
레코드세트의 결과에서 HTML 테이블을 생성하려면 GetString의 5개 매개변수 중 3개만 신경 쓰면 됩니다: coldel(레코드세트의 열을 구분하는 HTML 코드), rowdel(레코드세트의 행을 구분하는 HTML 코드) 레코드세트) 및 nullexpr(현재 레코드가 비어 있을 때 생성되어야 하는 HTML 코드)입니다.
다음과 같이 코드 코드를 복사합니다.
<표 테두리=1>
<TR><TD>
<% = Response.Write rs.GetString( , , </TD><TD>, </TD></TR><TR>, ) %>
</TABLE>
이렇게 작성된 HTML 결과는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
<표 테두리=1>
<TR>
<TD>row1, field1 값</TD>
<TD>row1, field2 값</TD>
</TR>
<TR>
<TD>row2, field1 값</TD>
<TD>row2, 필드2 값</TD>
</TR>
</TABLE>
여기에 버그가 있습니다. 드롭다운 메뉴 생성을 살펴보겠습니다.
다음과 같이 코드 코드를 복사합니다.
<%
RS 설정 = conn.Execute(값 선택, selectOptionsTable에서 텍스트 또는 DER BY theText)
optSuffix = </OPTION> & vbNewLine
valPrefix = <OPTION 값='
valSuffix = '>
opts = RS.GetString( , , valSuffix, optSuffix & valPrefix, --error-- )
' 다음 줄이 핵심입니다!
opts = 왼쪽( opts, Len(opts)-Len(valPrefix) )
Response.Write <Select ...> & vbNewLine
응답.valPrefix 및 opts 쓰기
응답.쓰기 </Select>
%>
올바른 테이블을 만들고 버그를 해결하려면 다음을 수행하십시오.
다음과 같이 코드 코드를 복사합니다.
<%
RS = conn.Execute 설정(* FROM 테이블 선택)
tdSuffix = </TD> & vbNewLine & <TD>
trPrefix = <TR> & vbNewLine & <TD>
trSuffix = </TD> & vbNewLine & </TR> & vbNewLine & <TR> & vbNewLine
opts = RS.GetString( , , tdSuffix, trSuffix & trPrefix, --error-- )
' 다음 줄이 핵심입니다!
opts = 왼쪽( opts, Len(opts)-Len(trPrefix) )
Response.Write <TABLE Border=1 CellPadding=5> & vbNewLine
응답.trPrefix 및 opts 쓰기
응답.쓰기 </TABLE> & vbNewLine
%>
완전히 다른 접근 방식을 소개하겠습니다.
다음과 같이 코드 코드를 복사합니다.
<%
SQL = '<OPTION Value=''',value,'''>',text,'</OPTION>' FROM 테이블 또는 DER BY 텍스트 선택
RS = conn.Execute(SQL) 설정
Response.Write <Select> & vbNewLine & RS.GetString(,,,vbNewLine) & </Select>
%>
사용해 본 적이 있나요? . .
그거 봤어? 결과는 쿼리에서 직접 반환될 수 있습니다.
한 단계 더 나아가서 다음과 같이 할 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
<%
SQL = '<OPTION Value=''' & value & '''>' & text & '</OPTION>' FROM table 또는DER BY text 선택
RS = conn.Execute(SQL) 설정
Response.Write <Select> & vbNewLine & RS.GetString(,,,vbNewLine) & </Select>
%>
완전한 예는 다음과 같습니다.
스크립트 출력:
711855 수요일 23 2005-03-23 오전 1:33:37
711856 수요일 23 2005/3/23 오전 1:23:00
711857 2005년 3월 23일 수요일 23시 오전 1시 26분 34초
711858 수요일 23 2005-03-23 오전 1:33:53
711859 수요일 23 2005-03-23 오전 1:30:36
전체 ASP 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
<%
' adovbs.inc에서 선택한 상수:
상수 adClipString = 2
' 변수를 선언합니다... 항상 좋은 습관입니다!
Dim cnnGetString ' ADO 연결
Dim rstGetString ' ADO 레코드세트
Dim strDBPath ' Access DB(*.mdb) 파일의 경로
Dim strDBData ' 모든 데이터를 덤프하는 문자열
Dim strDBDataTable ' 모든 데이터를 덤프하는 문자열
'이번에만 우리는 테이블을 만들었습니다
' mdb 파일의 실제 경로에 대한 MapPath입니다.
strDBPath = Server.MapPath(db_scratch.mdb)
'OLE DB를 사용하여 연결 만들기
cnnGetString = Server.CreateObject(ADODB.Connection) 설정
' 이 줄은 Access 샘플 데이터베이스에 대한 것입니다.
'cnnGetString.Open 공급자=Microsoft.Jet.OLEDB.4.0;데이터 원본= & strDBPath & ;
' 우리는 실제로 SQL Server를 사용하고 있으므로 대신 이 줄을 사용합니다.
' 이 줄을 주석 처리하고 위의 Access 항목의 주석 처리를 제거합니다.
' 자신의 서버에서 스크립트를 가지고 놀아보세요.
cnnGetString.Open 공급자=SQLOLEDB;데이터 원본=10.2.1.214;
& 초기 카탈로그=샘플;사용자 ID=샘플;비밀번호=비밀번호 _
연결 시간 초과(&)=15;네트워크 라이브러리=dbmssocn;
' 연결 개체를 사용하여 간단한 쿼리를 실행합니다.
' 결과 레코드 세트를 변수에 저장합니다.
Set rstGetString = cnnGetString.Execute(Select * FROM 스크래치)
' 이제 이것이 흥미로워지는 부분입니다. 일반적으로 우리는 그렇게 합니다.
' 마지막 레코드를 만날 때까지 일종의 루프입니다.
'를 레코드세트에서 가져옵니다. 이번에는 모든 데이터를 가져오겠습니다.
' 한 번에 급습하여 문자열에 덤프하여 우리가 할 수 있도록
' 최대한 빨리 DB와의 연결을 끊으세요.
strDBData = rstGetString.GetString()
' 설명을 위해 이 작업을 두 번 수행하므로... 위치를 변경합니다.
' 두 번째 호출 전 RS 시작 부분에.
rstGetString.MoveFirst
' 이번에는 HTML 테이블 형식으로 모든 것을 다시 요청합니다.
strDBDataTable = rstGetString.GetString(adClipString, -1, _
&</td><td>, </td></tr> & vbCrLf & <tr><td>, )
' 깔끔한 HTML에 대한 만족할 줄 모르는 욕구 때문에 실제로
' 다음 문자열을 자릅니다. GetString에는 문자열만 있습니다.
' 별도의 매개변수가 아닌 행 사이에 이동하는 매개변수입니다.
' 마지막 행 뒤에 무엇을 배치할지에 대한 것입니다.
' HTML 테이블이 구축되는 방식으로 인해 추가 비용이 발생합니다.
' <tr><td>는 마지막 레코드 뒤에 위치합니다.
' 아무것도 없기 때문에 끝에 전체 구분 기호가 있습니다.
' else를 거기에 배치하면 많은 상황에서 이것이 잘 작동합니다.
' HTML을 사용하면 대부분의 개발자가 조금 이상해집니다.
' 행을 닫고 계속 진행하지만 나 자신을 가져올 수 없었습니다.'
여분의 행을 남겨두세요... 특히
' 다른 모든 셀과 다른 수의 셀입니다.
' 뭐라고 해야 할까요... 이런 것들이 저를 괴롭히는 편이에요 ;)
strDBDataTable = 왼쪽(strDBDataTable, Len(strDBDataTable) - Len(<tr><td>))
' .GetString에 대한 몇 가지 참고 사항:
' 이 메서드는 실제로 최대 5개의 선택적 인수를 사용합니다.
' 1. StringFormat - 반환할 형식입니다.
' 레코드세트 텍스트입니다.
' 유효한 값입니다.
' 2. NumRows - 반환할 행 수입니다.
'를 -1로 변경하면 모든 행을 나타냅니다.
' 3. ColumnDelimiter - 열 사이에 배치할 텍스트입니다.
'기본값은 탭 문자입니다.
' 4. RowDelimiter - 행 사이에 배치할 텍스트
'기본값은 캐리지 리턴입니다.
' 5. NullExpr - NULL 값이 다음과 같은 경우 사용할 표현식입니다.
'가 반환되었습니다. 기본값은 빈 문자열입니다.
' 레코드세트와 연결을 닫고 개체를 삭제합니다.
' 우리가 걱정하기도 전에 내가 이 일을 할 수 있다는 점에 주목하세요.
' 데이터 중 하나를 표시합니다!
rstGetString.Close
rstGetString = 아무것도 설정하지 않음
cnnGetString.Close
cnnGetString = 아무것도 설정하지 않음
' 실제로는 할 필요가 없는 데이터 테이블을 표시합니다.
' GetString 호출 이후의 모든 형식 지정이 대부분의 작업을 수행했습니다.
' 테이블 텍스트 작성 측면에서 우리를 위해.
Response.Write <테이블 테두리=1> & vbCrLf
응답.쓰기 <tr><td>
응답.strDBDataTable 쓰기
응답.쓰기 </table> & vbCrLf
' 참고: GetString을 사용하면 얻을 수 있는 출력 형식은 다음과 같습니다.
' 매개변수 없이:
Response.Write vbCrLf & <p>다음은 형식화되지 않은 버전입니다:</p> & vbCrLf
응답.쓰기 <pre> & vbCrLf
Response.Write strDBDataResponse.Write </pre> & vbCrLf
' 그게 전부입니다 여러분!
%>