2016-05-30 2 views
1

Derzeit habe ich eine Programmierung für eine Website mit asp.net, die Daten von Microsoft SQL Server extrahieren und aktualisieren.Warum kann ich meine SQL Server-Tabelle mit diesem Code nicht aktualisieren?

Im Moment muss ich bestimmte Werte in bestimmten Spalten in bestimmten Tabelle aktualisieren, aber mein Update SqlCommand funktioniert nicht. Ich recherchiere bereits im Internet, aber es funktioniert nicht. Es gibt keinen Fehler, aber der Wert in der SQL-Server-Tabelle in der Spalte in der Zeile Kritikalität wurde nicht aktualisiert, wenn ich auf die Schaltfläche klicke. Ich benutze diese SQL-Abfrage und es funktioniert gut:

UPDATE dbo.HullPoF 
SET WeightageFactor = 0.10 
WHERE Criticality = 'Fatigue Loading' 

Dies ist mein Code:

protected void btnSubmitPoF_Click(object sender, EventArgs e) 
{ 
    conn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["myDBconn1"].ConnectionString); 

    commPoF = new SqlCommand("UPDATE dbo.HullPoF SET WeightageFactor = @WF WHERE Criticality='Fatigue Loading'", conn1); 
    commPoF.Parameters.Add("@WF", System.Data.SqlDbType.NVarChar).Value = txtWFFatLoad.Text; ; 

    conn1.Open(); 
    commPoF.ExecuteNonQuery(); 
    conn1.Close(); 
} 

Was mit meinem Code falsch? Einer der Lösung, die ich versuche zu verwenden ist von Update table using SqlCommand in asp.net

Der aktuelle Wert 0,20 ist, und ich möchte auf 0,10

p/s ändern: Dies ist meine erste Frage auf dieser Website. Wenn mein Frageformat falsch ist, sag es mir bitte.

+4

Wird ein Fehler angezeigt? Woher weißt du, dass es nicht funktioniert? Haben Sie versucht, SQL mit SQL Server Profiler zu verfolgen, um festzustellen, ob etwas mit dem generierten SQL nicht stimmt? – sstan

+0

Da der Wert in der SQL Server-Tabelle für die Spalte WeightFactor in der Zeile Kritikalität nicht geändert wurde. Ich verwende "UPDATE dbo.HullPoF SET WeightageFactor = 0.10 WHERE Kritikalität = 'Fatigue Loading'" und es funktioniert gut – Fahmieyz

+0

Wahrscheinlich das Problem von Doppel Semikolons in SQL-Parameter-Deklaration hier: "commPoF.Parameters.Add (" @ WF ", System .Data.SqlDbType.NVarChar) .Value = txtWFFatLoad.Text;; ". Stellen Sie sicher, dass der Datentyp dem Datentyp column entspricht und der Wert txtWFFatLoad vorhanden ist. Ich empfehle Ihnen, eine gespeicherte Prozedur zum Aktualisieren von DB-Werten zu verwenden, anstatt die Aktualisierungsabfrage direkt in SqlCommand zu schreiben. –

Antwort

1

Nachdem zurück durch Hunderte von Codezeile in Projekt vor allem in Page_Load prüft, scheint es das Problem etwas mit Deutscher Post-Back-Funktion zu tun.

Alles, was ich tun müssen, ist

if(!IsPostBack) { }

einigen meiner Code in Page_Load

Leider jeder Zeit mit meinen dummen Fehler setzen zu verschwenden.

2

Ich habe Ihr Problem repliziert und die Syntax ist korrekt. Überprüfen Sie die Verbindungszeichenfolge.

+0

überprüfen Sie bitte diese [URL] (http://stackoverflow.com/help) es wird nützlich sein, Ihre Qualität zu erhöhen –

+0

Ja, mein WeightageFactor in nvarchar Typ, Nvarchar (10) um genau zu sein. Wie ich in meiner Frage "UPDATE dbo.HullPoF SET WeightageFactor = 0.10 WHERE Kritikalität = 'Fatigue Loading'" funktioniert in meiner SQL-Abfrage (ohne das Zitat), wo der Wert in Spalte WeightFactor in Zeile Kritikalität von 0,20 bis 0,10 – Fahmieyz

+0

aktualisieren Lassen Sie uns die Antworten nicht bearbeiten, um im Wesentlichen zum OP zu kommentieren. –

1

Wenn WeightageFactor ist Doppel so es konvertieren und auf Parameter senden

double WF = double.Parse(txtWFFatLoad.Text); 
commPoF.Parameters.Add("@WF", SqlDbType.Float); 
commPoF.Parameters["@WF"].Value = WF; 

Wenn WeightageFactorString so Verwenden

commPoF.Parameters.AddWithValue("@WF",txtWFFatLoad.Text); 
+0

Mein WeightageFactor ist in nvarchar (10), nicht doppelt, also muss ich die Daten im txtWFFatLoad.Text nicht konvertieren. – Fahmieyz

+0

Ich bearbeitete Antwort – mohsen

1

ersetzen

commPoF.Parameters.Add("@WF", System.Data.SqlDbType.NVarChar).Value = txtWFFatLoad.Text; 

mit

commPoF.Parameters.AddWithValue("@WF", txtWFFatLoad.Text); 
+0

Ich versuche aber immer noch mit dem gleichen Problem – Fahmieyz

Verwandte Themen