2016-08-09 8 views
0

Ich habe eine Desktop-Anwendung in Visual Studio und SQL Server Compact Edition 3.5 erstellt. Ich kann einen Datensatz ohne Fehler einfügen. Mein Problem ist nach dem Ausführen des Updates ohne Fehler, es gibt keine Änderungen in der Datenbank nach.Aktualisierung *. SDF-Datenbank-Datei mit VB.NET

Hier ist mein Update-Code:

Dim Cmd As SqlCeCommand 
     Try 
      If Con.State = ConnectionState.Closed Then Con.Open() 
      Cmd = New SqlCeCommand("Update [Meds] SET [Brand] [email protected],[GenericName][email protected],[Dosage][email protected],[Form][email protected],[StockDose][email protected],[Supplier][email protected],[Manufacturer][email protected],[Quantity][email protected],[PerUnit1][email protected],[ExpiryDate][email protected],[SellingPrice][email protected] WHERE [PerUnit2] [email protected]", Con) 
      Cmd.Parameters.Add(New SqlCeParameter("@Brand", SqlDbType.NVarChar)).Value = txtBrand.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@GenericName", SqlDbType.NVarChar)).Value = txtGenericName.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@Dosage", SqlDbType.NVarChar)).Value = txtDosage.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@Form", SqlDbType.NVarChar)).Value = cbForm.SelectedText 
      Cmd.Parameters.Add(New SqlCeParameter("@StockDose", SqlDbType.NVarChar)).Value = txtStockDose.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@Supplier", SqlDbType.NVarChar)).Value = txtSupplier.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@Manufacturer", SqlDbType.NVarChar)).Value = txtManufacturer.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@Quantity", SqlDbType.NVarChar)).Value = txtQty.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@PerUnit1", SqlDbType.NVarChar)).Value = cbPerUnit1M.SelectedText 
      Cmd.Parameters.Add(New SqlCeParameter("@ExpiryDate", SqlDbType.DateTime)).Value = dtpExpiry.Value 
      Cmd.Parameters.Add(New SqlCeParameter("@SellingPrice", SqlDbType.NVarChar)).Value = txtPrice.Text 
      Cmd.Parameters.Add(New SqlCeParameter("@PerUnit2", SqlDbType.NVarChar)).Value = cbPerUnit2M.SelectedText 
      Cmd.ExecuteNonQuery() 
      MsgBox("Items already UPDATED!") 
      List.Show() 
      Me.Close() 
     Catch ex As Exception 
      MessageBox.Show(ex.Message) 
     End Try 
     Con.Close() 
+0

Bitte teilen Sie Ihre Verbindungszeichenfolge – ErikEJ

+0

Dim Con Als OleDbConnection = Neue OleDbConnection ("Provider = Microsoft.ACE.OLEDB.12.0; Datenquelle = C: \ Benutzer \ Adrian \ Documents \ Pharmacy.accdb;") – dran1979

+0

Das ist NICHT SQL Server Compact Edition, das ist Microsoft Access? !! – ErikEJ

Antwort

0

Versuchen Zugabe:

Dim modified = Cmd.ExecuteNonQuery() 
If modified = 0 Then Throw New Exception("Nothing was updated") 

Wenn der modifizierte Wert = 0 ist, dann stimmt etwas nicht mit Ihrer WHERE-Klausel und du bist nicht die Datensätze übereinstimmen.

Wenn der geänderte Wert <> 0 dann die Update-Abfrage lief und etwas übereinstimmte. Das Problem muss daher bei den Werten liegen, die Sie aktualisieren, oder wie auch immer Sie diese Werte überprüfen.

+0

wird dies versuchen .. danke – dran1979

+0

Danke, Mein UPDATE funktioniert jetzt, vielen Dank bis zum nächsten Mal. Sir – dran1979

+0

Kein Problem. Wenn dies jetzt funktioniert, können Sie die Antwort bitte als akzeptiert ankreuzen. – FloatingKiwi

0

Sie sind wahrscheinlich an der falschen Stelle einchecken, schauen Sie in Ihrem bin/debug Ordner nach einer Kopie der SDF-Datei. Der beste Ansatz ist, während der Entwicklung den vollständigen Pfad in der Verbindungszeichenfolge zu verwenden (oder die Verbindungszeichenfolge zur Laufzeit zu konstruieren)

+0

Hallo ErikEJ, ich habe den Pfad überprüft und es ist richtig. Ich verwende den gleichen Pfad, in dem meine INSERT-Abfrage funktioniert. – dran1979

0

Vielen Dank an alle, die meine Frage beantworten.

das Problem war in meinem WHERE Clause-Anweisung, ich versuche, einen Datensatz zu ändern, der nicht übereinstimmt.

Dank FloatingKiwi.