ASP는 동적 대화 형 웹 페이지를 생성하기위한 강력한 도구입니다. 아래는 편집자가 귀하와 공유 한 ASP 스토리지 사용에 대한 자습서입니다. 관심있는 친구, 편집자와 함께 배우자!
1. 명령 개체 및 매개 변수 개체를 사용하여 매개 변수를 전달합니다. 이 강의는 주로 Microsoft SQL Server 7.0 데이터베이스를 사용합니다. 먼저 백업을 위해 연결 파일 ADOSQL7.ASP를 만듭니다. 나중에 사용될 때 지정하지 않을 것입니다.
%''adosql7.asp
옵션 출현
응답 .expires = 0
``1 부 : 연결 설정
DIMCNN, Strcnn
setcnn = server.createObject ( "adodb.connection")
strcnn = "제공자 = sqloledb; userId = sa; password =; initialcatalog = pubs; dataSource = icbczjp"
CNN. OPENSTRCNN
%>
참고 : 직접 사용할 때 데이터 소스를 데이터베이스 서버의 컴퓨터 이름으로 설정하십시오.
또한 과거에 액세스 데이터베이스를 사용할 때 Microsoft Access97은 필드와 데이터를 쉽게 볼 수 있습니다. SQLServer 데이터베이스를 사용하는 경우, 특히 다른 컴퓨터에서 ASP 스크립트를 디버깅 할 때 필드 및 데이터를 볼 수있는 추가 도구를 설치해야합니다. 여기에서는 MSQRY32.exe (MicrosoftQuery) 도구를 제공합니다. 이 파일은 Office97과 함께 설치되어 있으며 일반적으로 디렉토리 "Microsoft Office/Office"에 있습니다.
예제 wuf70.asp :
%@language = "vbscript"%>
!-#includefile = "adosql7.asp"->
!-#includefile = "adovbs.inc"->
%''wuf70.asp
dimcmdtest, prmtest, rstest
''명령 개체를 만듭니다
setcmdtest = server.createobject ( "adodb.command")
'레코드 세트 및 명령 개체는 활성화 속성을 통해 연결 객체에 연결할 수 있습니다.
cmdtest.ActiveConnection = CNN
''SQL 명령 - 두 개의 매개 변수가 포함되어 있으며 표현합니까?
cmdtest.commandText = "UpdateJobsSetJob_desc =? wherejob_id =?"
``명령 유형이 SQL 문이라고 가정하십시오
cmdtest.commandtype = adcmdtext
``준비된 속성은 SQL 명령을 먼저 컴파일할지 여부를 결정하고 실행 속도를 높이기 위해 true로 설정합니다.
cmdtest.prepared = true
``매개 변수 개체를 만듭니다
setprmtest = cmdtest.createparameter ( "job_desc", Advarchar, Adparaminput, 50, "Network")
''데이터 수집 매개 변수에 데이터를 추가하십시오
cmdtest.parameters.appendprmtest
setprmtest = cmdtest.createparameter ( "job_id", adsmallint, adparaminput, "12")
cmdtest.parameters.appendprmtest
``수정 실행 - 결과를 반환 할 필요가없고, cmdtest.execute를 사용하십시오.
cmdtest.execute
``실행할 매개 변수 재설정 - 다른 데이터를 수정할 수 있습니다.
cmdtest.parameters ( "job_id") = "1"
cmdtest.parameters ( "job_desc") = "테스트"
cmdtest.execute
''실행할 매개 변수를 재설정합니다
cmdtest ( "job_id") = "14"
cmdtest ( "job_desc") = "Financial"
cmdtest.execute
setrstest = cnn.execute ( "selectjob_id, job_descfrffromjobs")
whilenotrstest.eof
응답 .Writerstest (0) & rstest (1) & "" "
rstest.movenext
향하게 하다
CNN.Close : setprmtest = 아무것도 없습니다
setcmdtest = 아무것도 : setcnn = 아무것도
%>
분석 :
1. 명령 개체의 CreateParameter 메소드는 SQL 명령 또는 저장 프로 시저의 매개 변수 개체를 작성하는 데 사용됩니다. 총 5 개의 매개 변수가 있습니다 (5 가지 매개 변수는 선택 사항) :
첫 번째 매개 변수 : 매개 변수 객체의 이름;
두 번째 매개 변수 : 너무 많은 유형의 데이터 유형의 매개 변수 개체가 있습니다. Ado Help, 여기서 Advarchar (String value), adsmallint (2 바이트 서명 정수)를 참조하십시오.
세 번째 매개 변수 : 매개 변수 유형. Adparaminput (입력 매개 변수를 나타냄), Adparamoutput (출력 매개 변수로 표시), AdparamReturnValue (반환 값으로 표시), AdParamUnkNown (매개 변수 유형을 결정할 수 없음), AdParamInputOutput (입력/출력 매개 변수를 표시);
네 번째 매개 변수 : 매개 변수의 데이터 길이는 바람직하게는 사용 중 오류를 피하기 위해 데이터베이스의 해당 필드 길이와 동일하도록 지정됩니다. 특히 데이터 유형이 Varchar 인 경우 정수 또는 날짜 유형 인 경우 값이 필요하지 않습니다.
다섯 번째 매개 변수 : 매개 변수 설정의 초기 값.
2.cmdtest.parameters.append 메소드는 매개 변수 데이터 수집에 매개 변수 개체를 추가합니다. 이 예에서 여러 매개 변수를 사용하는 방법도 볼 수 있습니다.
3.이 예에서는 다른 데이터에 대한 수정을 수행하기 위해 입력 매개 변수를 재설정하면 매우 편리합니다. 이 아이디어는 또한 프로그래밍시 가장 일반적으로 사용되는 방법 중 하나입니다.
4. 매개 변수를 재설정하면 cmdtest.parameters를 사용하거나 cmdtest ( "job_id")로 생략 할 수 있습니다.
2. ASP에서 저장된 절차를 사용하십시오
저장된 절차 (저장된 절차는 데이터베이스 서버에 있으며 하나 이상의 SQL 문을 포함 할 수있는 SQL 문 모음)이며, 저장된 절차를 작성하는 방법은이 강의의 내용에 속하지 않습니다. 이 강의는 주로 ASP에서 저장 프로 시저를 호출하는 방법을 보여줍니다.
저장된 절차를 사용하면 이점이 크며 ASP 스크립트에서 SQL 명령을 실행하는 것보다 더 효율적입니다. 전반적인 성능을 향상시키고 네트워크로드를 줄일 수 있습니다 (네트워크 서버와 데이터 서버 간의 상호 작용 감소). ASP 코드를 최적화하고 코드 유연성을 향상시킬 수 있습니다.
(i) 저장된 절차에서 입력 매개 변수를 사용합니다
이 예제에 사용 된 저장된 절차는 SQLServer 7.0과 함께 제공되는 "Byroyalty"입니다. 내부의 SQL 문은 매우 간단합니다. 추가 CreateProcedureByroyalty에 지나지 않으며 입력 매개 변수는 @percentage입니다.
CreateProcedureByRoyalty@PrentageInt
처럼
selectau_idfromtitleAuthor
WheretitleAuthor.royaltypeper=@percentage
servbywww.cidu.net
예제 wuf71.asp
%@language = vbscript%>
!-#includefile = "adosql7.asp"->
!-#includefile = "adovbs.inc"->
%''wuf71.asp
dimcmdtest, prmtest, rstest
setcmdtest = server.createobject ( "adodb.command")
cmdtest.commandtext = "Byroyalty" ''저장 프로 시저 이름
``명령 유형이 저장된 절차라고 가정하십시오
cmdtest.commandtype = adcmdstoredproc
``매개 변수 개체를 만듭니다
setprmtest = server.createobject ( "adodb.parameter")
'유형 속성은 wuf70.asp의 두 번째 매개 변수에 해당합니다
prmtest.type = adinteger''4-byte 서명 정수
'방향 속성은 wuf70.asp의 세 번째 매개 변수에 해당합니다
prmtest.direction = adparaminput
'값 속성은 wuf70.asp의 다섯 번째 매개 변수에 해당합니다
prmtest.value = 30
cmdtest.parameters.appendprmtest
setcmdTest.ActiveConnection = CNN
'레코드 세트를 반환해야하므로 setrstest = cmdtest.execute를 사용하십시오.
setrstest = cmdtest.execute
whilenotrstest.eof
응답 .Writerstest (0) & "" "
rstest.movenext
향하게 하다
CNN.CLOSE
setrstest = 아무것도 없음 : setprmtest = 아무것도 없습니다
setcmdtest = 아무것도 : setcnn = 아무것도
%>
CommandText 속성은 SQL 명령을 지정하거나 저장된 절차 또는 테이블 이름을 지정할 수 있습니다.
이 예에서는 매개 변수 객체를 작성하는 것이 wuf70.asp와 약간 다릅니다. 사실, 자세히 보면 의미가 비슷합니다. 이 예제에는 사용되지 않는 두 가지 속성이 있습니다 : prmtest.name, prmtest.size, wuf70.asp의 5 가지 매개 변수에 해당하는 유형, 방향 및 값이 있습니다.
(ii) 출력 매개 변수를 사용합니다
데이터베이스 테이블에서 레코드를 얻거나 값을 계산할 때 출력 매개 변수를 반환하는 저장된 절차를 사용해야합니다. 예를 들어, 먼저 SQLServer Pubs 라이브러리에서 새로운 저장된 절차를 만듭니다. 저장된 절차는 두 날짜를 입력 한 다음 최대 값을 출력해야합니다.
CreateProcedureOutemploy
(
@job_lvltinyintoutput,
@hire_date1dateTime,
@hire_date2dateTime
))
처럼
@job_lvl = max (job_lvl)를 선택하십시오
wherehire_date> =@hire_date1andhire_date =@hire_date2
저장 절차를 작성하는 몇 가지 방법이 있습니다.
1. Microsoft SqlServer의 EnterprisEmanager를 사용하여 왼쪽의 트리 디렉토리에서 열고 다음에 열어서 다음과 같이 열어줍니다. Consoleroot – Microsoftsqlservers – SQLServerGroup – ICBCZJP (Wind 저장된 절차를 입력 한 후에도 구문으로 감지 될 수도 있습니다.
2. Microsoft SqlServer의 QueryAnalyzer를 사용하여 먼저 데이터베이스 서버에 연결하고 PUBS 데이터베이스를 선택하십시오. 위의 저장 절차를 입력하고 ExecuteQuery (또는 F5를 누르십시오)를 클릭하십시오.
3. vb6.0을 사용하여 메뉴를 열고 "보기"/"데이터보기 창"을 열면 "데이터 링크"/"새 데이터 링크"를 마우스 오른쪽 버튼으로 클릭하십시오.
4. ASP 스크립트를 사용하여 wuf75와 같은 저장 프로 시저를 만듭니다.
%@language = vbscript%>
!-#includefile = "adosql7.asp"->
!-#includefile = "adovbs.inc"->
%''wuf75.asp
Dimstrsql
``주 : & chr (10) & chr (13)는 주로 외모를 위해 무시할 수 있습니다.
strsql = "CreateProcedureOutemploy (@job_lvltinyintoutput,"& chr (10) & chr (13) & _
"@hire_date1dateTime,@hire_date2dateTime"& chr (10) & chr (13) & _
"@job_lvl = max (job_lvl)에서 select inmiployee"& _
"wherehire_date> =@hire_date1andhire_date =@hire_date2"
cnn.executestsql
Response.write "저장 절차 작성 성공"
cnn.close : setcnn = 아무것도
%>
저장 프로 시저가 작성된 후 메뉴를 사용하는 것 외에도 SQL 문 "DropProcedureOutemly"를 사용하여 삭제할 수도 있습니다.
예제 WUF72.ASP - 필요한 입력 매개 변수를 저장 프로 시저로 보내고 출력 결과를 얻습니다.
%@language = vbscript%>
!-#includefile = "adosql7.asp"->
!-#includefile = "adovbs.inc"->
%''wuf72.asp
dimcmdtest, prmtest
setcmdtest = server.createobject ( "adodb.command")
cmdtest.ActiveConnection = CNN
cmdtest.commandText = "Outemploy" ''저장 절차 이름
cmdtest.commandtype = adcmdstoredproc
``매개 변수 개체를 만듭니다
setprmtest = cmdtest.createparameter ( "job_lvl", adtinyint, adparamoutput)
cmdtest.parameters.appendprmtest
``adtinyint-1 바이트 서명 정수
''AddBdate-Date Value (yyyymmdd)
setprmtest = cmdtest.createparameter ( "Hiredate1", addbdate, adparaminput, "1993-05-09")
cmdtest.parameters.appendprmtest
setprmtest = cmdtest.createparameter ( "Hiredate2", addbdate, adparaminput, "1994-02-01"))
cmdtest.parameters.appendprmtest
cmdtest.execute
'다음 세 가지 표현은 동일하다는 것을 의미합니다
response.writecmdtest ( "job_lvl") & ""
response.writecmdtest.parameters ( "job_lvl") & ""
response.writecmdtest.parameters ( "job_lvl"). 값
CNN.CLOSE
setprmtest = 아무것도 없습니다
setcmdtest = 아무것도 : setcnn = 아무것도
%>
(iii) 반환 코드 매개 변수를 사용하십시오
Return 문을 사용하여 저장된 절차에서 다른 리턴 코드를 반환하십시오. 예를 들어, 저장된 절차는 먼저 레코드 세트를 얻은 다음, 마가렛이라는 직원이 있으면 1을 반환하면 0이 반환됩니다.
CreateProcedurereturnemploy
처럼
selectemp_id, fnamefrommomployee
ifexists (selectfnamefromiMiployEewherefName = ''Margaret '')
반환 (1)
또 다른
반환 (0)
예제 wuf73.asp
%@language = vbscript%>
!-#includefile = "adosql7.asp"->
!-#includefile = "adovbs.inc"->
%''wuf73.asp
dimcmdtest, prmtest, rstest
setcmdtest = server.createobject ( "adodb.command")
cmdtest.ActiveConnection = CNN
cmdtest.commandtext = "returnemploy" ''저장 프로 시저 이름
cmdtest.commandtype = adcmdstoredproc
setprmtest = cmdtest.createparameter ( "returnValue", Adinteger, AdparamreturnValue)
cmdtest.parameters.appendprmtest
setrstest = cmdtest.execute ()
whilenotrstest.eof
응답 .Writerstest (0) & "] [& rstest (1) &" "
rstest.movenext
향하게 하다
rstest.close : setrstest = 아무것도 없습니다
``cmdTest ( "returnValue")를 반환하기 전에 rstest가 먼저 닫아야합니다. 그렇지 않으면 결과가 잘못되었습니다.
ifcmdTest ( "returnValue") = 1then
Response.write "이 직원이 있습니다"
또 다른
응답. "직원 없음"
endif
CNN.CLOSE
setprmtest = 아무것도 없습니다
setcmdtest = 아무것도 : setcnn = 아무것도
%>
3. 빅 데이터를 다루는 방법
여기서 "빅 데이터"는 주로 텍스트 (큰 텍스트) 및 이미지 (이미지) 필드를 나타냅니다. 위에서 설명한 방법을 사용하여 데이터를 올바르게 얻을 수 없습니다. 먼저 크기 = rstest (0) .ActualSize를 사용하여 필드 값의 실제 길이를 얻은 다음 RSTEST (0) .getChunk (size)를 사용하여 데이터를 가져와야합니다. 실제로 사용하면이 필드는 비교적 크기 때문에 서버 리소스를 합리적으로 저장하고 사용하기 위해 세그먼트 된 판독 값이 일반적으로 채택됩니다. 예제 wuf74.asp :
%@language = vbscript%>
!-#includefile = "adosql7.asp"->
!-#includefile = "adovbs.inc"->
%''wuf74.asp
Dimstrsql, rstest
'pr_info는 텍스트 필드입니다
strsql = "selectpr_info, pub_idfrompub_info"
setrstest = cnn.execute (strsql)
dimbasicsize, 시작, ltext
dowhilenotrstest.eof
응답 .Writerstest (1) & "" "
'1024 바이트 당 읽기 당
기본 크기 = 1024
시작 = 0
Beginsizerstest (0) .ActualSize
ltext = rstest (0) .getChunk (Basicsize)
시작) = 시작+기본 크기
'클라이언트에 대한 세그먼트 별 출력 세그먼트
응답 .writelText
향하게 하다
response.write ""
rstest.movenext
고리
CNN.CLOSE
setrstest = 아무것도 : setcnn = 아무것도
%>
이 예에서는 매번 최대 1024 바이트를 읽고 여러 번 읽습니다. 반대로, 빅 데이터를 데이터베이스에 작성하면 메소드가 위와 유사하지만 getChunk 메소드를 사용하는 대신 AblendChunk 메소드를 사용합니다.
rstest (0) .appendChunkLtext
참고 : 마지막으로 SQLServer 데이터베이스에 대한 약간의 팁을 소개합니다. 이 상황에 직면 한 경우 : 데이터베이스의 중국 데이터가 차량 코드로 표시되므로 당황하지 마십시오. "c :/wind 문제의 소스는 SQLServer 드라이버이며, 일반적으로 Windows 98 버전 2 (SQLServer 드라이버의 버전 번호는 3.70.06.23) 또는 Windows 2000 또는 MDAC2.5가 설치됩니다 (버전 번호는 3.70.08.20).
위는 ASP 스토리지 사용에 대한 자습서입니다. 나는 당신이 모든 것을 배웠다고 믿습니다. 더 많은 관련 컨텐츠는 Wonew 기술 채널을 계속 따르십시오.