2016-09-29 2 views
0

Der Code werfen keine Fehler es einfach nicht Führen Sie die satementaktualisieren SQL-Datenbank unter Verwendung von VB.NET

Private Sub Update_Program(item As Programme) 
    'Set Command 
    SchoolTypes.Connexion.Open() 
    item.Command = New SqlClient.SqlCommand("UPDATE T_Programme Set pro_nom='@nom' , [email protected] , [email protected] WHERE pro_no ='@no'", SchoolTypes.Connexion) 

    ''Add Parameter 
    item.Command.Parameters.Add("@no", SqlDbType.VarChar, 6) 
    item.Command.Parameters.Add("@nom", SqlDbType.VarChar, 50) 
    item.Command.Parameters.Add("@unit", SqlDbType.Float) 
    item.Command.Parameters.Add("@heures", SqlDbType.Int) 
    ''''Set Values 
    item.Command.Parameters("@no").Value = item.Pro_No 
    item.Command.Parameters("@nom").Value = item.Pro_Nom 
    item.Command.Parameters("@unit").Value = item.Pro_Nbr_Unit 
    item.Command.Parameters("@heures").Value = item.Pro_Nbr_Heure 

    Try 
     If item.Command.ExecuteNonQuery() > 0 Then 
      MsgBox("Modifier avec Succes!") 
     End If 
     SchoolTypes.Connexion.Close() 
    Catch ex As Exception 
     err.ShowDetails(System.Reflection.MethodBase.GetCurrentMethod(), ex) 
    End Try 
End Sub 

Ich habe mein Kommando getestet und es funktioniert auf SQL, aber nicht auf dem Programm ...

Hier ist eine Paste aus meiner Datenbank Database

+0

der Zecken um ' 'loszuwerden @ no'' tatsächlich alle von ihnen – Plutonix

+0

wahrscheinlich" UPDATE loszuwerden 'tp_p44.dbo.T_Programme Set ...' – Slai

+0

@Plutonix ich versucht, und es tut auch Führen Sie die Abfrage –

Antwort

1

Ihr Befehl Aussage falsch ist. Sie sollten in Ihrer Update-Anweisung keine '' '' - Zeichen für Ihre Parameter angeben.

Und Sie haben auch Mismatch-Eingänge. Unten sollte Ihre Update-Anweisung stehen. cmd = New SqlCommand ("UPDATE T_Programme Set pro_nom = @ nom, pro_nbr_unites = @ Einheit, pro_nbr_heures = @ heures WHERE pro_no = @ no", con)

ich unten Code versucht. Und es funktioniert gut.

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
     Dim con As SqlConnection 
     Dim cmd As SqlCommand 
     Dim row As Integer 
     'Dim str As String 
     con = New SqlConnection("server=.;database=Test;integrated security=true") 
     con.Open() 
     cmd = New SqlCommand("UPDATE T_Programme Set [email protected] , [email protected] , [email protected] WHERE pro_no [email protected]", con) 
     cmd.Parameters.Add("@no", SqlDbType.VarChar, 6) 
     cmd.Parameters.Add("@nom", SqlDbType.VarChar, 50) 
     cmd.Parameters.Add("@unit", SqlDbType.Float) 
     cmd.Parameters.Add("@heures", SqlDbType.Int) 
     ''''Set Values 
     cmd.Parameters("@no").Value = "1234" 
     cmd.Parameters("@nom").Value = "qwerty" 
     cmd.Parameters("@unit").Value = 12.0 
     cmd.Parameters("@heures").Value = 2 
     row = cmd.ExecuteNonQuery() 

     con.Close() 
    End Sub 
+0

okay, also sollte ich vermeiden 'in Update-Anweisung, aber in anderen sollte ich sie erwähnen? Warum? –

+0

Es ist nicht nur Update-Anweisung, es geht um Platzhalter Sie müssen nicht "" geben. – Naidu

+1

@Pavan Chandaka Sie wissen, dass Sie den Wert an das Ende des Param rechts hinzufügen können? Aktualität über dem Mangel an Lesbarkeit, es ist verwirrend. Sie können Befehl und Verbindungen auch dazu verwenden, Anweisungen zu verwenden, damit sie ordnungsgemäß entsorgt werden, wenn Sie damit fertig sind. – Codexer

Verwandte Themen