2016-04-08 20 views
0

私はASP.NETを使用してAPIを開発中です。ある時点で、別のメソッドを呼び出すメソッドが必要です。それらの使用ストアドプロシージャの両方:HTTP 500:エラーの原因となるSQL接続文字列

public async Task<IHttpActionResult> GetTeamById(string TeamId) 
{  
     DataTable Result = new DataTable(); 

     SqlCommand Command = new SqlCommand("GetTeam", ConnectionString); 
     Command.CommandType = CommandType.StoredProcedure; 
     Command.Parameters.AddWithValue("@TeamId", TeamId); 

     using (ConnectionString) /defined above 
     { 
      try 
      {  
       ConnectionString.Open(); 

       using (SqlDataReader DataReader = Command.ExecuteReader()) 
       { 
        Result.Load(DataReader); 
        return Ok(Result); 
       } 
      } 
      catch 
      { 
       return InternalServerError(); 
      } 
     } 
    } 

    public async Task<IHttpActionResult> UpdateTeam(string TeamId) 
    { 
     SqlCommand Command = new SqlCommand("UpdateTeam", ConnectionString); 
     Command.CommandType = CommandType.StoredProcedure;    
     Command.Parameters.AddWithValue("@Id", TeamId); 

     using (ConnectionString) 
     { 
      try 
      { 
       ConnectionString.Open(); 

       int returnvalue = (int) Command.ExecuteScalar();    

       if (returnvalue == 1) 
        return BadRequest(); 
       else 
        await GetTeamById(TeamId); 
      } 
      catch 
      { 
       return InternalServerError(); 
      } 
     }     
    } 

私が直面する問題はUpdateTeamメソッドが呼び出されたときに、このコードは、500内部サーバーエラーをスローしていることです。私は問題がGetTeamById機能のConnectionString.Open()行で発生することを理解しました。

接続がまだ開いている可能性があると私は考えましたか?しかし、それがなぜusing()を使うのではないのですか?この問題を回避するにはどうすればよいですか?

ご協力いただきありがとうございます。私は、プロシージャに接続するとき

+0

は、なぜあなたは(VAR dbAbel_Reportingは=新しいAbel_ReportingPortalEntitiesを())を使用して、これらの – Bharat

+0

のようなあなたのconnestionstringを使用していけない { – Bharat

+0

すなわちVARにそれを使用し、それの新しいインスタンスを作成.. – Bharat

答えて

2

私はいつも、この標準に従ってください:

using (var conn = new SqlConnection(connectionString)) 
using (var command = new SqlCommand("ProcedureName", conn) { 
          CommandType = CommandType.StoredProcedure }) { 
    conn.Open(); 
    command.ExecuteNonQuery(); 
    conn.Close(); 
} 
+0

申し訳ありません、ありがとう!それを適用し、それは意図したとおりに動作します:) –

関連する問題