2009-09-29 2 views
1

웹 서비스를 처음 사용합니다.C#을 사용하여 webservice를 통해 저장 프로 시저를 호출하는 방법?

데이터베이스 액세스는 ADO.NET을 사용하여 저장 프로 시저에 액세스해야합니다.

어떤 아이디어가 있습니까?

+0

간단한 일 [웹 서비스, 저장 프로 시저 및 SQL 쿼리를 통해 데이터 액세스 (http://www.csharphelp.com/archives/archive252.html) – rahul

+0

위의 URL은 더 이상 작동하지 않습니다. .따라서 동일 업데이트. http://www.csharphelp.com/2006/07/data-access-through-web-services-stored-procedures-and-sql-query/ – Ditty

답변

5

The C# Station ADO.NET Tutorial - Lesson 07: Using Stored Procedures를 참조하십시오

이 단원에서는 데이터 액세스 코드에 저장 프로 시저를 사용하는 방법을 보여줍니다. 다음은이 학습의 목적은 다음과 같습니다

  • 가 저장 프로 시저를 사용하는 SqlCommand 개체를 수정하는 방법에 대해 알아보십시오.
  • 저장 프로 시저에 매개 변수를 사용하는 방법을 이해하십시오. 당신은 새로운 시작하면
+0

@Andrew Hare, 스토어드 프로 시저의 정상적인 실행을 알고 있습니다. 웹 서비스에서 sp를 호출하고 실행하는 방법을 알고 싶습니다. 여기 웹 서비스 롤은 무엇입니까? 수행하는 방법 ? – Anuya

+0

+1 저장 프로 시저를 통해 ADO.NET에 액세스하기위한 좋은 자습서입니다. 누구든지 ADO.NET 웹 서비스에 대해 똑같이 좋은 것을 알고 있습니까? –

+0

@karthik, 나는 당신이 어쨌든 이것을 필요로 할 것이라고 생각합니다. –

15

, 나는 강하게 당신이 (대신 이전 스타일의 ASMX 웹 서비스의) WCF를 사용하여 시작하는 것이 좋습니다.

이 경우

, 다음이 필요합니다

1) 서비스 계약 웹 서비스에 (동작을 (를 정의하는 인터페이스)) :

[ServiceContract] 
public interface IMyDataService 
{ 
    [OperationContract] 
    YourDataType GetData(int idValue); 
} 

2) 통화에 대한 데이터 구조를 정의하고 데이터 계약 (여기 : 리턴 타입 YourDataType) :

[DataContract] 
public class YourDataType 
{ 
    bool boolValue = true; 
    string stringValue = "Hello "; 

    [DataMember] 
    public bool BoolValue 
    { 
     get { return boolValue; } 
     set { boolValue = value; } 
    } 

    [DataMember] 
    public string StringValue 
    { 
     get { return stringValue; } 
     set { stringValue = value; } 
    } 
} 
,

3) 실제로 웹 서비스 메소드를 구현하고 저장 프로 시저를 사용하여 데이터베이스에 대한 호출을 만들 것 서비스 클래스 -이 같은 : 나는 완전히 같은데 알고,

public class YourDataService : IMyDataService 
{ 
    public YourDataType GetData(int idValue) 
    { 
     YourDataType result = new YourDataType(); 

     using(SqlConnection _con = new SqlConnection("server=(local);database=test;integrated security=SSPI;")) 
     { 
      using(SqlCommand _cmd = new SqlCommand("YourStoredProcName", _con)) 
      { 
       _cmd.Parameters.AddWithValue("@ID", idValue); 

       _cmd.Parameters.Add("@OutStringValue", SqlDbType.VarChar, 20) 
           .Direction = ParameterDirection.Output; 
       _cmd.Parameters.Add("@OutBoolValue", SqlDbType.Bit) 
           .Direction = ParameterDirection.Output; 

       _cmd.ExecuteNonQuery(); 

       result.StringValue = _cmd.Parameters["@OutStringValue"].Value.ToString(); 
       result.BoolValue = Convert.ToBoolean(_cmd.Parameters["@OutBoolValue"].Value); 

      } 
     } 

     return result; 
    } 
} 

여기에 무엇 당신을 저장 프로 시저의 모양은 다음과 같습니다 (내 경우에는 다음과 같습니다.

CREATE PROCEDURE dbo.YourStoredProcName 
    (@ID INT, @OutStringValue VARCHAR(20) OUTPUT, @OutBoolValue BIT OUTPUT) 

이것은 완전히 다를 수 있습니다! 이 사실을 실제 사례에 맞게 수정해야합니다!

4) 궁극적으로, 당신은 콘솔 응용 프로그램 또는 NT 서비스)에 자신을 IIS에서 (당신의 WCF 서비스를 호스팅 할 수있는 방법이 필요하거나 것이다 - 그건 그냥 표준 WCF는 적어도 마지막으로

5) 일입니다, 클라이언트 응용 프로그램은 WCF 서비스에 "서비스 참조 추가"를 호출하여 다시 호출 할 수 있어야합니다. 이것은 완전히 표준적인 WCF 항목이며 여기서는 특별한 조치가 필요하지 않습니다.

WCF 서비스가 데이터베이스에 저장된 proc를 호출하여 사용자 지정 데이터 형식의 일부 값을 호출자에게 반환합니다.

마크

+0

환상적인 답변! – davewasthere

관련 문제