ADO. NET 액세스 저장 프로시저

ADO. NET 액세스 저장 과정 도 간단 하지만 일부 세부 적 인 부분 은 주의해 야 한다.
ADO. NET 에서 저장 과정 을 어떻게 호출 하 는 지 보 여 주 는 작은 사례 를 만 들 었 다.
데이터베이스 테이블 구조 코드 는 다음 과 같다.

  
CREATE TABLE TestTB( [ ID ] [ int ] IDENTITY ( 1 , 1 ) PRIMARY KEY NOT NULL , [ Name ] [ nvarchar ] ( 50 ) NOT NULL , ) GO

저장 프로시저 코드 는 다음 과 같 습 니 다.

  
CREATE PROCEDURE [ dbo ] . [ SelectAllProc ] ( @inputData nvarchar , @outPutData int output ) AS declare @myCount int print @inputData select * from dbo.TestTB select @myCount = count ( * ) from dbo.TestTB set @outPutData = @myCount /* SET NOCOUNT ON */ RETURN @myCount GO

    이 저장 과정 은 입력 매개 변수, 출력 매개 변수, selection 문 구 를 되 돌려 주 는 결과 집합 과 return 이 되 돌려 주 는 단일 결과 값 을 포함한다.ADO. NET 호출 시 이 값 을 동시에 설정 하고 가 져 와 야 합 니 다.
     인터페이스 부분 은 ASP. NET MVC 3 를 사용 합 니 다.데이터 의 편 의 를 위해 두 개의 Model 클래스 를 맞 췄 습 니 다.각각 TestTB 류 와 TestTBView Model 류 다.첫 번 째 종 류 는 하나의 데이터 실 체 를 싣 는 데 사용 되 고 두 번 째 종 류 는 인 터 페 이 스 를 나 타 낼 때 한꺼번에 데 이 터 를 인터페이스 에 전달 하 는 데 사용 된다.
     Models 부분의 코드 는 다음 과 같 습 니 다.

  
1 /// <summary> 2 /// 3 /// </summary> 4   public class TestTB 5 { 6 public int ID { get ; set ; } 7 public string Name { get ; set ; } 8 } 9 10 /// <summary> 11 /// 12 /// 13 /// </summary> 14   public class TestTBViewModel 15 { 16 public TestTBViewModel() 17 { 18 this .TestTBList = new List < TestTB > (); 19 } 20 /// <summary> 21 /// TestTB 22 /// </summary> 23 public List < TestTB > TestTBList { get ; set ; } 24 /// <summary> 25 /// return 26 /// </summary> 27 public int TotalCount { get ; set ; } 28 /// <summary> 29 /// output 30 /// </summary> 31 public int TotalCount2 { get ; set ; } 32 }

    저장 프로시저 와 MVC 컨트롤 러 의 코드 를 다음 과 같이 호출 합 니 다.

  
1 /// <summary> 2 /// Action 3 /// </summary> 4 /// <returns></returns> 5 public ActionResult ShowData() 6 { 7 return View( this .GetAllData()); 8 } 9 10 /// <summary> 11 /// 12 /// </summary> 13 /// <returns> </returns> 14 private TestTBViewModel GetAllData() 15 { 16 TestTBViewModel model = new TestTBViewModel(); 17 // ( ) 18 using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings[ " ApplicationServices " ].ConnectionString)) 19 using (SqlCommand command = new SqlCommand()) 20 { 21 command.Connection = connection; // 22 command.CommandText = " dbo.SelectAllProc " ; // 23 command.CommandType = System.Data.CommandType.StoredProcedure; // 24 25 // , , return 26 SqlParameter pReturn = command.Parameters.Add( " @aaa " , System.Data.SqlDbType.Int); 27 // 28 pReturn.Direction = System.Data.ParameterDirection.ReturnValue; 29 30 // 31 SqlParameter pInput = command.Parameters.Add( " @inputData " , System.Data.SqlDbType.NVarChar); 32 // 33 pInput.Direction = System.Data.ParameterDirection.Input; 34 // ( print ) 35 pInput.Value = " aaa " ; 36 37 // 38 SqlParameter pOut = command.Parameters.Add( " @outPutData " , System.Data.SqlDbType.Int); 39 // 40 pOut.Direction = System.Data.ParameterDirection.Output; 41 42 // 43 connection.Open(); 44 // 45 // ExecuteReader System.Data.CommandBehavior.CloseConnection 46 using (SqlDataReader dataReader = command.ExecuteReader(System.Data.CommandBehavior.CloseConnection)) 47 { 48 // 49 while (dataReader.Read()) 50 { 51 model.TestTBList.Add( new TestTB() 52 { 53 ID = dataReader.GetInt32( 0 ), 54 Name = dataReader.GetString( 1 ) 55 }); 56 } 57 } 58 59 // return、output dataReader, 。 60 61 // return 62 model.TotalCount = ( int )pReturn.Value; 63 // output 64 model.TotalCount2 = ( int )pOut.Value; 65 } 66 67 return model; 68 }
     < SPAN style = "COLOR: #ff0000; BACKGROUND-COLOR: #ffffff" color = "#ff0000" >< STRONG > : return、output DataReader , 。</ STRONG ></ SPAN >
    인터페이스 부분 은 Razor 템 플 릿 을 사용 하여 보 여 줍 니 다.구체 적 인 코드 는 다음 과 같다.

  
@model MvcApplication1.Models.TestTBViewModel @{ ViewBag.Title = "ShowData"; Layout = "~/Views/Shared/_Layout.cshtml"; } < h2 > ShowData </ h2 > < p > @Html.ActionLink("Create New", "Create") </ p > < table > < tr > < th > ID </ th > < th > Name </ th > </ tr > @foreach (var item in Model.TestTBList) { < tr > < td > @item.ID </ td > < td > @item.Name </ td > </ tr > } </ table > < p > Count: @Model.TotalCount </ p > < p > Count2: @Model.TotalCount2 </ p >

좋은 웹페이지 즐겨찾기