방법: 호출 SQL Server에서 ASP.NET Visual C# .NET을 사용하여 저장 프로시저

기술 자료 번역 기술 자료 번역
기술 자료: 320916 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

저장 프로시저가 입력된 매개 변수 및 출력 매개 변수를 사용하여 Microsoft SQL Server 호출하려면 이 문서에서는 ASP.NET 및 ADO.NET Visual C# .NET을 사용하여 만드는 방법을 보여 줍니다.

이 문서의 코드 예제는 먼저 사용자가 만들 저장된 프로시저가 포함된 표준 Microsoft SQL Server 설치를 Pubs 데이터베이스에 있는지 여부를 확인합니다. 저장된 프로시저가 존재하지 않을 경우 코드에서는 마지막 이름에 따라 Authors 테이블을 검색하려면 한 매개 변수를 사용하고 일치하는 행 및 출력 매개 변수로 반환되는 행 수를 반환하는 저장된 프로시저를 만듭니다.

이 문서에서는 간단한 사용자 인터페이스를 제공하는 Web Form을 만드는 방법을 보여 줍니다. Web Form 다음 항목을 포함합니다.
  • 사용자가 검색 조건을 입력하는 텍스트 상자.
  • 검색 결과를 표시하는 DataGrid 컨트롤.
  • 반환되는 레코드 수를 표시하는 레이블 컨트롤.
  • 단추를 클릭할 때 저장된 프로시저를 호출하는 단추 컨트롤.

요구 사항

다음은 권장되는 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩의 목록입니다.
  • Microsoft SQL Server 7.0 이상
  • Microsoft Visual Studio .NET
  • Microsoft Visual C# .NET
  • 사용 권한을 데이터베이스에서 저장된 프로시저를 만들려면
이 문서에서는 사용자가 다음 항목을 잘 알고 있다고 가정합니다.
  • ASP.NET
  • SQL Server 저장 프로시저

ASP.NET 프로젝트 만들기 및 컨트롤 추가

이 섹션에서는 ASP.NET 프로젝트를 만들고 기본 사용자 인터페이스를 작성하는. 참고 이러한 단계를 Microsoft Visual C# .NET 코드를 사용합니다. 프로젝트를 만들려면 다음과 같이 하십시오.
  1. 시작 을 누르고, 프로그램, Visual Studio .NET 을 차례로 가리킨 다음 Visual Studio .NET 을 클릭하십시오.
  2. Visual Studio .NET 시작 페이지에서 새 프로젝트 를 클릭하십시오.
  3. 새 프로젝트 대화 상자의 프로젝트 형식Visual C# 프로젝트 클릭한 다음 템플릿 에서 ASP.NET 웹 응용 프로그램 을 누릅니다.
  4. 이름 상자에 웹 응용 프로그램의 이름을 입력한 다음 확인 을 누릅니다.
  5. 다음 서버 컨트롤을 Web Form에 추가하고 표에 나열된 대로 속성을 설정합니다.
    표 축소표 확대
    컨트롤ID 속성텍스트 속성
    레이블lblLastName만든 사람의 성 다음과 같이 입력하십시오.
    TextBoxtxtLastName%
    단추btnGetAuthors제작자 가져오기
    레이블lblRowCount(행 개수)

  6. DataGrid 서버 컨트롤을 Web Form에 도구 상자에서 끌어 후 GrdAuthorsName 속성을 설정하십시오.
  7. 표를 마우스 오른쪽 단추로 클릭한 다음 자동 서식 을 클릭하십시오.
  8. 전문가 1 구성표에 대한 누른 다음 확인 을 누릅니다.

해당 GetAuthorsByLastName 만들 저장 프로시저

다음 Transact-SQL 코드를 GetAuthorsByLastName 저장 프로시저를 만들 수:
Use Pubs
Go
Create Procedure GetAuthorsByLastName (@au_lname varchar(40), @RowCount int output)  
as 

select * from authors where au_lname like @au_lname; 

/* @@ROWCOUNT returns the number of rows that are affected by the last statement. */ 
select @RowCount=@@ROWCOUNT
				
이 코드는 두 매개 변수가 포함된: @ au_lname 및 @ RowCount. @ au_lname 매개 변수는 Authors 테이블에서 같은"검색을 수행하려면 검색 문자열을 가져오는 입력된 매개가 변수입니다. 영향을 받는 행을 얻으려면 @@ ROWCOUNT 변수를 사용하는 출력 매개 변수 @ RowCount 매개가 변수입니다.

만들기 및 저장된 프로시저 실행

SQL Server 데이터베이스에 액세스하려면 SqlDataReader 와 같은 새 개체와 SqlDataAdapter 개체를 제공하는 System.Data.SqlClient 네임스페이스를 가져와야 합니다. SqlDataReader SQL Server 데이터베이스에서 행의 앞으로만 이동 가능한 스트림을 읽을 수 있습니다. DataAdapter 데이터 명령 및 DataSet 개체를 채우는 SQL Server 데이터베이스를 업데이트하는 데 사용할 수 있는 데이터베이스 연결 집합을 나타냅니다.

ADO.NET은 데이터 소스에 관계없이 일관성 있는 관계형 프로그래밍 모델을 제공하는 데이터의 메모리 상주 표현인 DataSet 개체에 대해 소개합니다. 이 절의 코드는 이러한 개체를 모두 사용합니다.
  1. Web Form을 두 번 클릭하십시오.
  2. 코드 창의 맨 위에 나타나는 사용자 Web Form의 선언 섹션에 다음 코드를 (사용하여 지시문) 추가합니다:
    using System.Data;
    using System.Data.SqlClient;
    					
  3. 저장된 프로시저가 있는지 확인합니다 새 저장된 프로시저를 만들려면 SqlCommand 개체에 SqlDataReader 개체와를 함께 사용하십시오. SqlCommand 데이터베이스에 대해 SQL 명령을 실행할 수 있습니다. 그런 다음 쿼리에 일치하는 행을 포함하는 SqlDataReader, 반환할 SqlCommandExecuteReader 메서드를 호출하십시오.

    Web Form Page_Load 이벤트에 다음 코드를 추가하여:
    	private void Page_Load(object sender, System.EventArgs e)
    	{
    		// Only run this code the first time the page is loaded.
    		// The code inside the IF statement is skipped when you resubmit the page.
    		if (!IsPostBack)
    		{
    			//Create a connection to the SQL Server; modify the connection string for your environment
    			//SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;Trusted_Connection=yes");
    			SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;UID=myUser;PWD=myPassword;");
    
    			// Create a Command object, and then set the connection.
    			// The following SQL statements check whether a GetAuthorsByLastName  
    			// stored procedure already exists.
    			SqlCommand MyCommand = new SqlCommand("select * from sysobjects where id = object_id(N'GetAuthorsByLastName')" +
    			"  and OBJECTPROPERTY(id, N'IsProcedure') = 1", MyConnection);
    
    			// Set the command type that you will run.
    			MyCommand.CommandType = CommandType.Text;
    
    			// Open the connection.
    			MyCommand.Connection.Open();
    
    			// Run the SQL statement, and then get the returned rows to the DataReader.
    			SqlDataReader MyDataReader = MyCommand.ExecuteReader();
    
    			// If any rows are returned, the stored procedure that you are trying 
    			// to create already exists. Therefore, try to create the stored procedure
    			// only if it does not exist.
    			if(!MyDataReader.Read())
    			{
    				MyCommand.CommandText = "create procedure GetAuthorsByLastName" + 
    					" (@au_lname varchar(40), select * from authors where" +
    					" au_lname like @au_lname; select @RowCount=@@ROWCOUNT";
    				MyDataReader.Close();
    				MyCommand.ExecuteNonQuery();
    			}
    			else
    			{
    				MyDataReader.Close();
    			}
    
    			MyCommand.Dispose();  //Dispose of the Command object.
    			MyConnection.Close(); //Close the connection.
    		}
    
    		// Add the event handler to the Button_Click event.
    		this.btnGetAuthors.Click += new System.EventHandler(this.btnGetAuthors_Click);
    	}
    					
  4. btnGetAuthors 단추의 Click 이벤트가 저장된 프로시저를 호출하고 SqlDataAdapter 개체를 사용하여 저장된 프로시저를 실행하십시오. 저장 프로시저의 매개 변수를 만들고 SqlDataAdapter 개체의 Parameters 컬렉션에 추가해야 합니다.

    다음 코드를 Page_Load 이벤트 후 추가:
    	private void btnGetAuthors_Click(object sender, System.EventArgs e)
    	{
    		//Create a connection to the SQL Server; modify the connection string for your environment.
    		//SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;Trusted_Connection=yes");
    		SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;UID=myUser;PWD=myPassword;");
    
    		//Create a DataAdapter, and then provide the name of the stored procedure.
    		SqlDataAdapter MyDataAdapter = new SqlDataAdapter("GetAuthorsByLastName", MyConnection);
    
    		//Set the command type as StoredProcedure.
    		MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
    
    		//Create and add a parameter to Parameters collection for the stored procedure.
    		MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@au_lname", SqlDbType.VarChar, 40));
    
    		//Assign the search value to the parameter.
    		MyDataAdapter.SelectCommand.Parameters["@au_lname"].Value = (txtLastName.Text).Trim();
    
    		//Create and add an output parameter to the Parameters collection. 
    		MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@RowCount", SqlDbType.Int, 4));
    
    		//Set the direction for the parameter. This parameter returns the Rows that are returned.
    		MyDataAdapter.SelectCommand.Parameters["@RowCount"].Direction = ParameterDirection.Output;
    
    		//Create a new DataSet to hold the records.
    		DataSet DS = new DataSet();
    		
    		//Fill the DataSet with the rows that are returned.
    		MyDataAdapter.Fill(DS, "AuthorsByLastName");
    
    		//Get the number of rows returned, and assign it to the Label control.
    		//lblRowCount.Text = DS.Tables(0).Rows.Count().ToString() & " Rows Found!"
    		lblRowCount.Text = MyDataAdapter.SelectCommand.Parameters[1].Value + " Rows Found!";
    
    		//Set the data source for the DataGrid as the DataSet that holds the rows.
    		GrdAuthors.DataSource = DS.Tables["AuthorsByLastName"].DefaultView;
    
    		//NOTE: If you do not call this method, the DataGrid is not displayed!
    		GrdAuthors.DataBind();
    
    		MyDataAdapter.Dispose(); //Dispose the DataAdapter.
    		MyConnection.Close(); //Close the connection.
    	}
    					
  5. 솔루션 탐색기에서 .aspx 페이지를 마우스 오른쪽 단추로 누른 다음 시작 페이지로 설정 을 누릅니다.
  6. 프로젝트를 저장한 다음 시작 Visual Studio .NET 에서 을 클릭하십시오. 프로젝트가 컴파일되고 기본 페이지가 실행될 알 수 있습니다.
  7. 텍스트 상자에 저자의 성과 및 작성자 가져오기 를 클릭하십시오. 저장된 프로시저가 호출되고 반환된 행을 DataGrid 채우는 알 수 있습니다.

    예: "G." 문자로 시작하는 성을 기준으로 모든 저자의 반환하는 G %, SQL Server 형식 검색 문자열을 제공할 수 있습니다.

문제 해결

  • 데이터베이스에 연결할 수 없으면 ConnectionString SQL Server를 실행하는 서버에 제대로 가리키는지 확인하십시오.
  • 데이터베이스에 연결할 수는 있지만 저장된 프로시저를 만들려고 할 때 문제가 발생할 경우 연결 중인 데이터베이스에서 저장된 프로시저를 만들 수 있는 올바른 사용 권한이.

속성

기술 자료: 320916 - 마지막 검토: 2003년 12월 5일 금요일 - 수정: 3.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft ASP.NET (included with the .NET Framework)
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
키워드:?
kbmt kbhowtomaster kbsqlclient kbstoredproc kbsystemdata KB320916 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com