2016-12-21 140 views
0

我一直在創建接受輸入參數的Web API,並調用一個存儲過程來傳遞我們收到的在數據庫中插入/更新帳戶表的輸入參數。既然是完美的,但我的API還需要選擇被更新/插入記錄並返回它們的響應Web API調用存儲過程來插入/更新數據庫

public class ProjectNameCreationController : ApiController 
    { 
    [HttpGet] 
    public HttpResponseMessage Get(string Account) 
    { 
     if (string.IsNullOrEmpty(Account)) 
     { 
      return Request.CreateResponse(new { error = "Input parameters cannot be Empty or NULL" }); 
     } 
     string strcon = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString; 
     SqlConnection DbConnection = new SqlConnection(strcon); 
     DbConnection.Open(); 

     SqlCommand command = new SqlCommand("[dbo].[usp_InserUpadte]", DbConnection); 
     command.CommandType = CommandType.StoredProcedure; 

     //create type table 
     DataTable table = new DataTable(); 
     table.Columns.Add("AccountID", typeof(string)); 
     table.Rows.Add(Account); 

     SqlParameter parameter = command.Parameters.AddWithValue("@account_TT", table); 
     parameter.SqlDbType = SqlDbType.Structured; 
     parameter.TypeName = "account_TT"; 
     command.ExecuteNonQuery(); 

現在我不知道,如果我們能夠選擇,現在它是插入/更新記錄作爲存儲過程的一部分,或將我必須seperately創建查詢像下面

 string strQuery = "select AccountID,CounterSeq from Account where AccountID = @accountID "; 
     var cmd = new SqlCommand(strQuery); 
     cmd.Parameters.AddWithValue("@accountID",Account); 

因爲我將不得不返回響應作爲帳戶ID-CounterSeq(如:IT-1)時的API調用等http://localhost/api/ProjectNameCreation?Account=IT 。我該如何處理這個問題。任何幫助將不勝感激

+0

您使用的是SQL Server嗎? – Aamir

+0

這不是處理Web API時處理數據的有效方法。您可以考慮使用[實體框架](https://www.asp.net/entity-framework)進行數據庫操作。 –

+0

我是否爲存儲過程創建實體框架? – user4912134

回答

0

您必須更改您的過程,如下所示,它將返回上次插入或更新的記錄。

**--for insert** 
    IF @StatementType = 'Insert' 
    BEGIN 
    insert into Account (first_name,last_name,salary,city) values(@first_name, @last_name, @salary, @city) 
    --below line to return last inserted record 
    select * from Account where accountid= SCOPE_IDENTITY() 
    END 
    **--for Update** 
    IF @StatementType = 'Update' 
    BEGIN 
    UPDATE Account SET 
       First_name = @first_name, last_name = @last_name, salary = @salary, 
       city = @city 
      WHERE accountid= @accountid 
    --below line to return last Updated record 
    select * from account where accountid = @accountid 
相關問題