저장 프로시저를 사용하여 ASP 데이터베이스 액세스 구현
저자:Eve Cole
업데이트 시간:2009-06-24 17:21:43
1. ADO 개요
ADO(ActiveX Data Objects)는 웹 페이지에 데이터베이스 액세스를 추가하기 위한 사용하기 쉽고 확장 가능한 기술입니다. ADO를 사용하면 데이터베이스, 스프레드시트와 같은 OLE DB 호환 데이터 소스에 연결할 수 있는 간결하고 확장 가능한 스크립트를 작성할 수 있습니다. , 순차 데이터 파일 또는 이메일 디렉터리. OLE DB는 데이터베이스 관리 시스템의 기능을 표시하기 위해 표준 COM 인터페이스 세트를 제공하는 시스템 수준 프로그래밍 인터페이스입니다. ADO의 개체 모델을 사용하면 VBScript 또는 JScript와 같은 스크립팅 언어를 사용하여 이러한 인터페이스에 쉽게 액세스하고 웹 응용 프로그램에 데이터베이스 기능을 추가할 수 있습니다. 또한 ADO를 사용하여 ODBC(Open Database Connectivity) 호환 데이터베이스에 액세스할 수 있습니다.
데이터베이스 상호 연결에 대한 지식이 있는 스크립트 작성자라면 ADO의 명령 구문이 간단하고 사용하기 쉽다는 것을 알게 될 것입니다. 숙련된 개발자라면 ADO가 다양한 데이터 소스에 제공하는 확장 가능한 고성능 액세스를 높이 평가할 것입니다.
2. 데이터베이스에 액세스하는 일반적인 방법 일반적인 웹 페이지 액세스에서 데이터베이스에 대한 액세스는 먼저 ADODB.Connection 인터페이스의 객체를 생성한 다음 해당 데이터 소스를 이 객체에 바인딩합니다. 명명된 데이터 소스와 명명되지 않은 데이터 소스를 사용할 수 있으며, 필요에 따라 레코드 세트를 생성하거나 생성하지 않은 후 데이터 소스에 연결하고 실행 또는 열기 메소드를 사용하여 해당 테이블을 조작할 수 있습니다.
데이터베이스에 액세스하는 ASP의 일반적인 방법:
<
oConn=Server.CreateObject("ADODB.Connection") 설정
oRS=Server.CreateObject("ADODB.RecordSet")를 설정합니다.
set strConn="공급자=SQLOLEDB;사용자 ID=sa; 초기 카탈로그=Pubs;데이터 소스=" &request.ServerVariables("SERVER_NAME")
oConn.open strConn
set ORS=oConn.execute("테스트에서 * 선택")
>
위는 이름이 없는 링크에 대해 OLEDB를 사용하는 방법을 소개합니다. 이름이 지정된 링크인 경우 데이터 소스 테스트로 설정하고 사용자 이름과 비밀번호가 모두 비어 있으면 위의 oConn.open "test" 문만 다시 작성하면 됩니다. ,"",""
위에서는 웹 페이지에서 데이터베이스에 액세스하는 일반적인 방법을 간략하게 소개합니다. 이는 이미 매우 성숙하고 매우 유용합니다. 특정 데이터에 대한 액세스가 실제로 너무 복잡하면 작성하는 데 거의 10개의 SQL 문이 필요합니다. 또한, 때로는 서로 다른 웹 페이지에서 동일한 처리 프로세스를 사용해야 하는 경우가 있는데, 이는 저장 프로시저를 사용하는 것이 가장 큰 특징은 저장 프로시저의 기밀성이 상대적으로 높다는 것입니다. 그리고 원격 서버의 데이터베이스에 저장됩니다.
3. ASP ADO에서 저장 프로시저를 사용하면 명령 개체를 사용해야 하는 저장 프로시저에 액세스할 수 있습니다. 이 개체에서 사용자는 SQL 서버의 저장 프로시저를 직접 실행할 수 있으며 명령에 필요한 매개 변수를 사용할 수 있습니다. Pamaters 속성을 사용하여 처리됩니다.
Command 개체가 유효하려면 Command 개체의 ActiveConnection 속성을 Connection 개체로 설정하여 Connection 개체와 연결되어야 합니다. Connection 개체를 식별할 수 없는 경우 Command 개체는 연결과 연결할 때까지 유효하지 않습니다.
< 딤오콘
희미한 strConn
희미한 명령
희미한 orRs,or1
희미한 아아
딤SQL
oConn = Server.CreateObject("ADODB.Connection") 설정
set oCmd = Server.CreateObject("ADODB.Command")
set ors1=Server.CreateObject("ADODB.RecordSet")
'링크를 열고, 사용자 ID SA를 사용하고, 비밀번호는 비어 있으며, 로컬 서버의 데이터베이스에 연결합니다.
strConn="공급자=SQLOLEDB;사용자 ID=sa;초기 카탈로그=pubs;데이터 소스="& Request.ServerVariables("SERVER_NAME")
'원격 데이터베이스에 연결하는 경우 데이터베이스 주소는 10.82.88.105, 사용자는 tmp, 비밀번호는 123입니다.
'다음 방법을 사용할 수 있습니다' strConn="Provider=SQLOLEDB;User ID=tmp;pwd=123;Initial Catalog=tjbb;Data Source="& "10.82.88.110"
oConn.Open strConn
'설정된 링크를 명령의 활성 링크 속성에 추가합니다.
oCmd.ActiveConnection = oConn으로 설정
'호출 저장 프로시저를 로열티 및 매개변수로 설정합니다. 매개변수는 무엇입니까? 소개하다
oCmd.CommandText = "{call byroyalty(?)}"
oCmd.Parameters.Append oCmd.CreateParameter("@Percentage", adInteger, adParamInput)
' 입력 매개변수 제공
oCmd("@Percentage") = 75
'asp에서 위의 입력 매개변수를 사용하는 것은 매개변수 속성 없이도 가능합니다. VB에서 &를 사용하여 명령 텍스트에 해당 데이터를 구성하면 됩니다.' 매개변수 사용은 출력 중에 특히 유용합니다.
oRs = oCmd.Execute로 설정
ors1.activeconnection=oconn
'일반 SQL 문은 Source 및 open 속성을 사용하여 이 명령 개체에서 사용할 수도 있습니다. 여기서 source는 데이터 소스를 가리킵니다.
ors1.source ="연도=2000이고 월=1인 [tmptable]에서 *를 선택합니다."
ors1.cursorttype=adopenstatic
ors1.열기
>
4. SQL의 저장 프로시저 소개 SQL 언어를 사용하여 데이터베이스 액세스를 위한 저장 프로시저를 작성할 수 있습니다. 구문은 다음과 같습니다.
CREATE PROC[EDURE] 프로시저_이름 [;번호]
[
{@parameter data_type} [VARYING] [= 기본값] [OUTPUT]
]
[,...N]
[와 함께
{
재컴파일
암호화 |
재컴파일, 암호화
}
]
[복제용]
처럼
sql_statement [...n]
[ ] 안의 내용은 선택사항이고, () 안의 내용은 필수입니다.
예: 사용자가 tmp 테이블의 레코드를 삭제하기 위해 Select_delete 저장 프로시저를 생성하려는 경우 다음과 같이 작성할 수 있습니다.
다음으로 Proc select_del 생성
임시 삭제
예: 사용자가 tmp 테이블에서 특정 연도의 데이터에 대한 저장 프로시저를 쿼리하려고 합니다.
proc select_query @year int를 다음과 같이 생성합니다.
year=@year 인 tmp에서 *를 선택합니다.
여기서 @year는 저장 프로시저의 매개변수 예입니다. 이 저장 프로시저는 특정 노드 n에서 시작하여 최상위 상위 노드를 찾습니다. 자주 사용되는 이 프로세스는 저장 프로시저에 의해 수행될 수 있으며 웹 페이지에서 재사용하여 달성할 수 있습니다. 공유.
비어 있음: 노드가 최상위 노드임을 나타냅니다.
fjdid(상위 노드 번호)
노드 n이 비어 있지 않음: 노드의 상위 노드 번호를 나타냅니다.
dwmc (유닛 이름)
CREATE proc search_dwmc @dwidold int,@dwmcresult varchar(100) 출력
~처럼
@stop int 선언
@result varchar(80) 선언
@dwmc varchar(80) 선언
@dwid int 선언
카운트 안함 설정
@stop=1로 설정
@dwmc="" 설정
id=@dwidold 인 경우 jtdw에서 @dwmc=dwmc,@dwid=convert(int,fjdid)를 선택합니다.
@result=rtrim(@dwmc)을 설정하세요.
@dwid=0인 경우
@stop=0으로 설정
while (@stop=1) 및 (@dwid<>0)
시작하다
@dwidol=@dwid 설정
id=@dwidold 인 경우 jtdw에서 @dwmc=dwmc,@dwid=convert(int,fjdid)를 선택합니다.
@@rowcount=0인 경우
@dwmc="" 설정
또 다른
@result=@dwmc+@result 설정
if (@dwid=0) 또는 (@@rowcount=0)
@stop=0으로 설정
또 다른
계속하다
끝
@dwmcresult=rtrim(@result)을 설정합니다.
저장 프로시저를 완전하고 합리적으로 사용하면 서버 처리량을 향상시킬 수 있습니다. 저자는 저장 프로시저를 사용하여 거의 20개의 테이블에서 데이터를 가져와 이를 일반 테이블로 결합하여 거의 20,000개의 레코드를 생성하며, 필요한 시간은 약 7초입니다. 운영은 보다 합리적인 동적 웹 페이지의 도움으로 서버 개발을 더 높은 수준으로 향상시킬 수 있으며, 저장 프로시저를 최대한 활용하여 웹 디자인으로 인한 무거운 처리를 줄여 작성된 코드를 공유하고 합리적으로 활용할 수 있습니다. 코드는 서버의 데이터베이스 내부에 숨겨질 수 있으며, 일부 기술은 기밀로 유지됩니다. 이는 또한 저장 프로시저의 주요 기능이기도 합니다.