성명: 이 기사는 "컴퓨터 응용 프로그램" 23권 11호에 게재되었습니다.
개요: 다양한 시스템을 개발할 때 저장 프로시저를 사용하는 것은 좋은 습관입니다. 이는 임시 테이블, 함수, 커서와 같은 기능을 가져올 뿐만 아니라 디버깅, 업그레이드, 유지 관리가 편리해집니다. 그러나 거의 모든 저장 프로시저 호출은 동일한 모드에 있으며, 주요 차이점은 각 저장 프로시저의 매개 변수가 다르다는 것입니다. 그렇다면 모든 저장 프로시저 호출을 통합하고 불필요한 프로그래밍을 줄이는 방법을 사용할 수 있습니까? SQL Server 데이터베이스 및 ASP.NET에 대한 연구를 기반으로 우리는 통합 호출 방법을 구현했습니다. 이 방법은 호출할 저장 프로시저의 이름과 호출 시 특정 매개변수 값만 제공하면 됩니다. 절차를 호출할 수 있습니다.
키워드: 저장프로시저, 시스템 테이블, 정보구조뷰, ADO.NET 문서식별코드: ② 실무적 기술성과 보고서(기술), 이론적 학습 및 사회실천 요약(사회과학)
.NET에서 동일한 방식으로 저장 프로시저 호출
개요: 저장 프로시저를 사용하는 것은 프로젝트를 개발할 때 좋은 습관입니다. 임시 테이블, 함수 및 커서를 제공하고 디버깅, 업그레이드, 유지 관리도 이점을 얻을 수 있습니다. 그러나 저장 프로시저에 대한 거의 모든 호출은 동일한 패턴입니다. 차이점은 모든 저장 프로시저의 매개 변수입니다. 그러면 차이점에도 불구하고 동일한 방식으로 저장 프로시저를 호출하여 프로그래밍 코드를 줄일 수 있습니다. 귀하가 제공하는 정보는 다음과 같습니다. 저장 프로시저 이름과 해당 매개변수 값을 사용하면 매개변수를 직접 만들 필요가 없습니다. 키워드: Stord 프로시저, 시스템 테이블, 정보 스키마, ADO.NET
요약: 프로젝트 개발 시 종종 저장 프로시저. 그러나 거의 모든 저장 프로시저 호출은 동일한 패턴으로 이루어집니다. 주요 차이점은 생성된 각 매개변수의 유형과 값에 있습니다. 그렇다면 하나의 함수(또는 클래스)를 통해 모든 저장 프로시저를 호출하는 것이 가능한가요? 이 기사에서는 데이터베이스에서 제공하는 시스템 테이블을 사용하는 원칙에 따라 통합 호출 방법을 구현합니다. 이 방법은 호출할 저장 프로시저의 이름과 호출 시 특정 매개변수 값만 제공하면 됩니다. 저장 프로시저를 호출할 수 있습니다.
개요: 프로젝트 개발 중에 데이터베이스 시스템의 저장 프로시저를 호출해야 합니다. 그러나 저장 프로시저 호출은 거의 동일하며 주요 차이점은 매개변수 유형이나 값 등의 차이입니다. 함수(또는 클래스)? 데이터베이스 시스템에서 제공하는 시스템 테이블을 기반으로 이 문서에서는 저장 프로시저를 호출하는 클래스를 작성했습니다. 저장 프로시저를 호출하기 위해 제공하는 유일한 매개 변수는 저장 프로시저의 이름입니다. 저장 프로시저의 모든 매개변수 값.
private void GetProcedureParameter(params object[] 매개변수)
{ SqlCommand myCommand2 = new SqlCommand();
myCommand2.Connection = this.myConnection;
myCommand2.CommandText = "select * from INFORMATION_SCHEMA.PARAMETERS where SPECIFIC_NAME = '" + this.ProcedureName + "' order by ORDINAL_POSITION";
SqlDataReader reader = null; reader = myCommand2.ExecuteReader(); // 반환 매개변수 생성
myParameter = new SqlParameter();
myParameter.ParameterName = "@Value";
myParameter . SqlDbType = SqlDbType.Int;
myParameterDirection.ReturnValue;
myCommand.Parameters.Add(myParameter);
int i = 0; 여기서는 SqlParameter 유형, 값, 방향 및 기타 속성을 자동으로 생성할 수 있습니다.
while(reader.Read())
{
myParameter = new SqlParameter();
myParameter.ParameterName = reader["PARAMETER_NAME"].ToString();
myParameter.Direction = reader["PARAMETER_MODE"].ToString()=="IN" ?ParameterDirection.Input:ParameterDirection.Output;
스위치(reader["DATA_TYPE"].ToString()) {
케이스 "int" :
if(myParameter.Direction == ParameterDirection.Input)
myParameter.Value = (int)parameters[i] ;
myParameter.SqlDbType = SqlDbType.Int
; //...
특정 유형 처리가
많이 생략됨
default
: break
;
3.2 반환 결과 데이터 집합, 반환 값 및 나가는 매개 변수 집합 저장 프로시저의 매개 변수를 생성한 후 저장 프로시저를 호출할 수 있습니다. .NET에서는 결과 집합을 반환하는 일반적으로 사용되는 클래스가 SqlDataReader 및 DataSet이고, SqlDataReader는 연결을 유지하는 동안에만 사용할 수 있지만 DataSet은 그렇지 않습니다. 우리 구현에서는 호출 후에 연결이 끊어져야 하므로 DataSet을 사용하여 반환된 결과 집합을 저장합니다.
public SqlResult Call(params object[] 매개변수){ // SqlResult는 결과 데이터 세트, 반환 값 및 나가는 매개변수 세트를 저장하는 데 사용되는 자체 정의 클래스입니다. SqlResult result = new SqlResult() // 다음과 같이 자체 연결을 정의합니다. need String
myConnection = new SqlConnection(ConnectionString);
myCommand = new SqlCommand(this.ProcedureName, myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
SqlDataAdapter
myAdapter = new SqlDataAdapter(myCommand);
프로시저의 매개변수를 저장하고 값을 설정합니다.
GetProcedureParameter(parameters);
myAdapter.Fill(result.dataSet, "Table") // 저장 프로시저의 나가는 매개변수 값과 이름 쌍을 가져와서 Hashtable에 저장합니다. GetOutputValue(result) ; // 여기에서 다양한 리소스를 해제하고
myCommand.Dispose
(
)
myConnection.Dispose()
;
4. 추가 작업 여기서 구현한 것은 SQL Server 데이터베이스용이지만 이 방법은 정보 구조 보기를 제공하거나 ANSI-92 표준을 따르거나 메타데이터를 제공하는 모든 데이터베이스에 사용할 수 있습니다. 이를 SqlProcedure 클래스로 캡슐화하면 필요할 때 저장 프로시저를 쉽게 호출할 수 있어 기본적으로 반복적인 코드 작업이 많이 줄어듭니다. SqlProcedure 클래스가 더 많은 데이터 유형을 지원하려면 GetProcedureParameter() 메서드에서 필요에 따라 각 매개 변수의 유형, 방향, 길이, 기본값 및 기타 정보를 분석한 후 이 매개 변수를 생성해야 합니다. 기본적으로 모든 유형을 구현할 수 있으며, 이미지 유형도 이런 방식으로 생성할 수 있습니다. 이런 방식으로 수업은 모든 프로젝트에서 매우 일반적이고 유용할 수 있습니다.
참고자료
[1] Ray Rankins, Paul Jensen, Paul Bertucci, SQL Server 2000 실용 서적, 베이징: 전자 산업 출판부, 2002
[2] MSDN Library 2003년 1월, Microsoft Corporation
저자 소개: Liu Zhibo(1979-), 남성, 후난성 신화 출신, 석사 학위, 주요 연구 방향: 신경망 및 패턴 인식, 사무 자동화 정보 시스템
이메일:[email protected]