2016-12-21 1 views
0

Ich habe an der Erstellung der Web-API gearbeitet, die den Eingabeparameter akzeptiert und eine Stored Procedure aufruft, die den Eingabeparameter übergibt, der die Account-Tabelle in die Datenbank einfügt/aktualisiert . Nun, das ist perfekt, aber meine API müssen auch die Aufzeichnung auszuwählen, die aktualisiert wurde/eingefügt und bringt sie als AntwortWeb-API zum Aufrufen einer gespeicherten Prozedur zum Einfügen/Aktualisieren der DB

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(); 

Jetzt bin ich nicht sicher, ob wir in der Lage, den Datensatz zu wählen, die jetzt wurde/aktualisiert Einsatz als Teil der gespeicherten Prozedur oder werde ich wie eine Abfrage separat erstellen haben unter

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

Weil ich die Antwort als AccountID-CounterSeq Return müssen (zB: IT-1), wenn die API ist wie http://localhost/api/ProjectNameCreation?Account=IT genannt . Wie kann ich damit umgehen? Jede Hilfe wird sehr geschätzt

+0

verwenden Sie SQL Server? – Aamir

+0

Dies ist nicht der effiziente Weg, mit den Daten umzugehen, wenn Sie an einer Web-API arbeiten. Sie können in Betracht ziehen, [Entity Framework] (https://www.asp.net/entity-framework) für Datenbankoperationen zu verwenden. –

+0

Erstelle ich das Entity Framework für die gespeicherte Prozedur? – user4912134

Antwort

0

Sie müssen Ihre Prozedur ändern, wie unten wird ein Datensatz der zuletzt eingefügt oder aktualisiert werden.

**--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 
Verwandte Themen