aktualisieren von sql server-Datenbank mithilfe von asp.net c#

im Probleme bei der Aktualisierung meiner Datenbank aus einem Webformular. Ich benutze eine Reihe von Textboxen-und dropdownlists, die aufgefüllt werden von der datasource-aber aus irgendeinem Grund kann ich nicht aktualisieren.

Grundsätzlich den Primärschlüssel einer Zeile übergeben wird in der nächsten Seite, wo Sie die Textfelder,Dropdown-Listen, die ausgefüllt sind mit den Daten aus dieser Zeile.

Hier ist, was ich bisher versucht habe

    //Update the record with new information entered into controls
    protected void UpdateBut_Click(object sender, EventArgs e)
    {

        using (SqlConnection conn = new SqlConnection("Data Source=stephenp\\sqlexpress;Initial Catalog=Asset management System DB;Integrated Security=True"))
        {
            string sql = "UPDATE Peripherals SET PeripheralType=@PeripheralType, Model=@Model, PeripheralSerialNumber=@SerialNum, " +
                "Company = @Company, Department=@Department, Status=@Status, WarrantyExpirationDate=@Warranty, PeripheralCapexNumber=@CapexNum, " +
                "IPAddress=@IPAddress, LastModifiedDate = @LastMD, LastModifiedBy=@LastMB WHERE (PeripheralTagNumber = @PeripheralTagNumber)";


          //try
           //{
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                cmd.Parameters.AddWithValue("@PeripheralType", TypeDDL.Text.Trim());
                cmd.Parameters.AddWithValue("@Model", ModelTB.Text.Trim());
                cmd.Parameters.AddWithValue("@SerialNum", SerialNumTB.Text.Trim());
                cmd.Parameters.AddWithValue("@Company", CompanyDDL.Text.Trim());
                cmd.Parameters.AddWithValue("@Department", DepartmentDDL.Text.Trim());
                cmd.Parameters.AddWithValue("@Status", StatusDDL.Text.Trim());
                cmd.Parameters.AddWithValue("@Warranty", DateTime.Parse(WarrantyTB.Text.Trim()).ToShortDateString());
                cmd.Parameters.AddWithValue("@CapexNum", CapexNumTB.Text.Trim());
                cmd.Parameters.AddWithValue("@IPAddress", IPAddressTB.Text.Trim());
                cmd.Parameters.AddWithValue("@LastMD", DateTime.Now.Date.ToShortDateString());
                cmd.Parameters.AddWithValue("@LastMB", Session["username"].ToString());
                cmd.Parameters.AddWithValue("@PeripheralTagNumber", ID);

                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
             }
           //}
            //catch (SqlException ex) { }
        }

        this.getData();
    }

Dank

  • sind Sie immer Fehler?
  • Was ist dein ploblem?
  • Nun, was ist dein Problem mit diesem code? Ausnahmen? Fehlermeldungen? Nicht update etwas? Bitte etwas konkreter
  • Auch einige der Spalten scheint auf den Typ dateTime oder smalldatetime (LastModifiedDate etc), aber übergeben Sie einen string als parameter-Wert.
  • Hi, ich dont bekommen, Ausnahmen auch immer, es konzentriert sich nur und macht dann nichts. Es führt keine Aktualisierung der Datenbank auf der server-Seite entweder
  • Wie wollen Sie überprüfen, dass das update fehlgeschlagen ist? Öffnen Sie die Datenbank mit dem Fenster Server-Explorer in Visual Studio?
  • Ich öffne die Datenbank mit sql server management studio, und führen Sie eine Abfrage auswählen, die Zeile im der Suche nach. Es ist ein Kuckucksei, da sollte es updaten, aber es tut sich nix... nicht einmal eine Fehlermeldung, dass Sie eine Idee. Meine Theorie ist, dass es sein könnte das sql-statement, aber ich sah es 100 mal und kann nicht scheinen, um zu sehen, ein Problem
  • Ich würde raten, eines von drei Dingen.Entweder Debuggen Ihrer web-Formular, setzen Sie einen Haltepunkt, wenn Sie beginnen, fügen Sie die letzten parameter und überprüfen Sie den Wert der ID übergeben wird der Befehl, wenn Sie keine Fehler, aber kein update-es ist wahrscheinlich ID ist nicht, was Sie denken, es ist. Alternativ führen Sie SQL Server Profiler, und fangen Sie die genaue SQL-Code wird an die Datenbank weitergegeben, dies wird Ihnen auch sagen, was der Wert der Parameter, die übergeben werden. Schließlich, überprüfen Sie, was cmd.ExecuteNonQuery() gibt, wenn diese -1 ist, Sie wissen, Ihre Transaktion wurde zurückgesetzt.
  • Problem ist gelöst! Ich habe leider vergessen zu verwenden, wenn(!IsPostBack) in meiner main-Methode, was bedeutet, dass, wenn ich den Anruf getätigt um die Datenbank zu aktualisieren war es immer noch die Aktualisierung, die Werte wurden aktualisiert mit den aktuellen Werten in der Datenbank, d.h. die Werte wurden aktualisiert mit den exakt gleichen Werten. Hinzufügen if(!IsPostBack) das Problem gelöst, indem der Aufruf von update mit neuen eingegebenen Werte in die Textfelder/dropdownlists.

InformationsquelleAutor Master Yoda | 2013-06-20
Schreibe einen Kommentar