2016-10-24 3 views
0

Ich versuche, eine Abfrage in einer gespeicherten MSSQL-Prozedur auszuführen, um dies zu tun, verwende ich Javascript, Ajax und C#, hier ist mein Code (Javascript und Ajax sind nur Parameter zu senden WebService meines C# und funktioniert gut, das Problem ist mit meiner db Methode oder meinem Webservice-Code):Methode tut nicht, was es erwartet

WebService

[WebMethod] 
public string RegistrarInspeccion(int id, string partNumber, string inspectionDate, string data, string data2, int newId) 
{ 
    string respuesta = "Error"; 

    try 
    { 
     Inspection ins = new Inspection(id, partNumber, inspectionDate, data, data2, newId); 
     int resp = conn.RegistrarInspeccion(ins); 

     if (resp > 0) 
      respuesta = "Good Job"; 
     else 
      respuesta = "Something happen ...."; 
    } 
    catch (Exception ex) 
    { 
     respuesta = "Error: " + ex.Message; 
    } 
    return respuesta; 
} 

DB_Class

public int RegistrarInspeccion(Inspection ins) 
{ 
    int res = 0; 
    SqlCommand cmd = new SqlCommand("InsertInspection", conn); 
    try 
    { 
    Open(); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("@partNumber", ins.PartNumber); 
    cmd.Parameters.AddWithValue("@inspectionDate", ins.InspectionDate); 
    cmd.Parameters.AddWithValue("@data", ins.Data); 
    cmd.Parameters.AddWithValue("@data2", ins.Data2); 
    cmd.Parameters.AddWithValue("@NewId", ins.NewId); 

    res = cmd.ExecuteNonQuery(); 

    } 

    finally 
    { 
     Close(); 
    } 
    return res;  
} 

I don‘ t bekomme einen Fehler, nur bekomme ich immer die "respuesta = "Something happen ...."; Nachricht, ich habe keine Ahnung von was könnte das Problem sein, vielleicht ist meine Db-Code nicht korrekt ausgeführt worden? Was kann ich tun, um das zu beheben? Danke im Voraus.

Ich habe versucht, respuesta = "Something happen ...."; zu respuesta = resp.toString(); zu ändern und jetzt bekomme ich -1 als Ergebnis.

+0

Haben Sie versucht, durch den Code zu gehen, um zu sehen, was in Ihrem 'try' Block passiert? Haben Sie untersucht, ob SQL an die Datenbank gesendet wurde und in SSMS ausgeführt wurde (oder das Äquivalent, wenn Sie nicht mit SQL Server arbeiten)? – Tim

Antwort

0

Ihre SQL prüfen, von https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery(v=vs.110).aspx

Für UPDATE, INSERT und DELETE-Anweisungen, der Rückgabewert ist die Anzahl der Zeilen, die von dem Befehl betroffen. Wenn ein Trigger für eine Tabelle vorhanden ist, die eingefügt oder aktualisiert wird, enthält der Rückgabewert die Anzahl der Zeilen, die von der Einfüge- oder Aktualisierungsoperation betroffen sind, sowie die Anzahl der Zeilen, auf die sich der Trigger oder die Trigger auswirken. Für alle anderen Arten von Anweisungen ist der Rückgabewert -1. Wenn ein Rollback auftritt, ist der Rückgabewert ebenfalls -1.

+0

Dann muss ich 'if (resp> 0)' richtig? –

+0

Nein, -1 bedeutet, dass Sie keine Zeilen einfügen oder ein Rollback durchgeführt wurde. –

+0

Im Moment habe ich meine Datenbank angeschaut und dort sind alle meine Versuche, Informationen einzufügen, so funktioniert mein Code perfekt, nur dass wenn ich das erwähnte –