2017-02-08 1 views
-2

Ich versuche eine einfache Einfügung zu testen, bevor ich vollwertiger werde. Aber egal was ich versuchte, es würde einfach nicht funktionieren.Warum funktioniert meine einfache Einfügung nicht?

Einige Hintergrundinformationen über das Formular. Das Formular enthält Labels, die automatisch mit Daten gefüllt werden. Einige müssen vom Benutzer selbst eingegeben werden. Ich verwende nur 3 einfache Variablen, um die Dinge zu testen. Jetzt, selbst wenn ich den SQL direkt einbettle, gehen die Daten nicht in die Datenbank ein.

 internal void UpdateEPMTRequest2(string EPMTNumber, string name, int status) 
    { 
     con.Open(); 
     // var sql = "INSERT INTO EPMT_MASTER_REQUEST (EPMTID, , Status) values (@ePMTNumber, @name, @status)"; 

     // SqlCommand cmd = new SqlCommand("Exec[ePMT_SP_UpdateEPMTRequest2] '2', 'Tanagara', 0"); 
     SqlCommand cmd = new SqlCommand("ePMT_SP_UpdateEPMTRequest2", con);    
     // SqlCommand cmd = new SqlCommand(sql, con); 
     // cmd.Parameters.AddWithValue("@action", action); 
     cmd.Parameters.AddWithValue("@ePMTNumber", EPMTNumber); 
     cmd.Parameters.AddWithValue("@name", name); 
     cmd.Parameters.AddWithValue("@status", status); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 

     private void UpdateEPMTRequest2(string EPMTNumber, string name, int status) 
    { 
     try 
     { 
      eBiz.UpdateEPMTRequest2(EPMTNumber, name, status); 
     } 
     catch (Exception ex) { } 
    } 

    internal void UpdateEPMTRequest2(string EPMTNumber, string name, int status) 
    { 
     eDAO.UpdateEPMTRequest2(EPMTNumber, name, status); 
    } 
    protected void btnSave_Click(object sender, EventArgs e) 
    { 
     if (Request.QueryString["EPMTID"] != null) 
     { 
      string Action = "SaveUpdate"; 
      string EPMTNumber = Request.QueryString["EPMTID"].ToString(); 
      int status = Convert.ToInt32(ViewState["CStatus"].ToString()); 
      // UpdateEPMTRequest(Action, EPMTNumber, status); 
      Response.Redirect("ePMTDraft.aspx?msg=1"); 
     } 
     else 
     { 
      // string Action = "Save"; 

      if (Request.QueryString["EPMTID"] == null) 
       if (status == 0) 
        try 
        {      
        EPMTNumber = Request.QueryString["EPMTID"].ToString(); 
        // UpdateEPMTRequest(Action, EPMTNumber, status); 
        UpdateEPMTRequest2(EPMTNumber, name, status); 
         } 
        catch (Exception ex) { } 
        Response.Redirect("ePMTDraft.aspx?msg=1"); 
       } 
      } 

     ALTER PROCEDURE [dbo].[ePMT_SP_UpdateEPMTRequest2] 
-- Add the parameters for the stored procedure here 
@ePMTNumber varchar(20), 
@name varchar(100),  
@status int 

AS BEGIN - SET NOCOUNT ON hinzugefügt zusätzliche Ergebnismengen von zu verhindern - mit SELECT-Anweisungen zu stören. NOCOUNT EINSTELLEN;

-- Insert statements for procedure here 
INSERT INTO EPMT_MASTER_REQUEST (EPMTID, IssuerName, status) values (@ePMTNumber, @name, @status) 

END

Der Name ist in diesem Fall ein Auto-besiedelten Gebiet, die einen Sitzungswert hat, die ich weiß nicht, ob Sitzungswert anstelle des string name verwendet werden soll.

Ein weiteres Problem ist, dass der Name mir einen Fehler gibt - nicht im Kontext gefunden. Der Name ist eigentlich für ein Label lblInititor.text.

+0

Sie müssen uns Ihre Verbindungszeichenfolge mitteilen (ändern Sie ein beliebiges Passwort) und 'catch (Exception ex) {}' entfernen. –

+0

Ich habe die Verbindungszeichenfolge weggelassen. Aber wenn du die Insert-Anweisung sehen willst, kann ich sie in – tangara

+0

hinzufügen. Der leere Catch-Block ist wirklich gefährlich und das ist der Punkt, an dem du feststeckst und nicht in der Lage bist herauszufinden, was falsch läuft. –

Antwort

0

Im kommentierten Code der SQL-Anweisung stimmen die Anzahl der Spalten und die Anzahl der INSERT-Werte nicht überein.

Wenn Sie die gleiche Anweisung in der Storwd-Prozedur verwenden, dann könnte das die Ursache für einen Fehler sein.

Wenn Sie debuggen und die Ausnahmedetails sehen, sollten Sie in der Lage sein, den Fehler zu sehen.

Sie müssen die INSERT-Anweisung wie folgt ändern.

Ich bin mir nicht sicher über den genauen Spaltennamen der Tabelle, also nahm ich an, dass es "Name" ist.

Wenn dies funktioniert, müssen Sie die gleiche Abfrage in der gespeicherten proc auch verwenden.

Dies sollte Ihr Problem lösen.

+0

Hallo Chetan, der Spaltenname ist IssuerName aber auch ich habe das in meinem cs-Code geändert, die Daten werden nicht eingefügt. – tangara

+0

Erhalten Sie eine Ausnahme? Hast du die Nachricht der Ausnahme beobachtet? Sind Sie sicher, dass Sie auf die richtige Datenbank im Code zeigen und dieselbe Datenbank überprüfen, um zu überprüfen, ob die Daten eingefügt wurden? –

+0

Ich bin mir sehr sicher, dass die Datenbankverbindung korrekt ist. Gibt es eine andere Möglichkeit, Dinge auf eine einfachere Art und Weise zu testen? – tangara

Verwandte Themen