2016-04-29 3 views
0

Wie kann ich eine Datenbank MSSQL 2005 Express Datensatz über das Feld ID und VBScript aktualisieren?Wie kann ich eine Datenbank MSSQL 2005 Express-Datensatz mit dem ID-Feld aktualisieren

Ich habe ein Skript in VBScript:

myCommand.CommandText = "UPDATE Klienci_NC SET Klienci_NC.Klient = '" & & Klient_niceform' 'WHERE Klienci_NC.ID =' "& ID_zmienna &" '" 

Aber den Rekord in den Klienci_NC.Klient in MSSQL-Datenbank zu aktualisieren Klienci_NC ich in der Box ID_zmienna gegebenen Zahl eingeben muß, die die Aufzeichnungs-ID-Spalte.

Was zu tun Variable wird automatisch in die Box heruntergeladen?

Alle meine VBScipt Skript sieht wie folgt aus:

Dim conn, SQL, rs 
Const DB_CONNECT_STRING = "Provider=SQLOLEDB.1;Data Source=DJ-PC;Initial Catalog=Baza_NC;user id ='user_baza_nc';password='password'" 
Set myConn = CreateObject("ADODB.Connection") 
Set myCommand = CreateObject("ADODB.Command") 
myConn.Open DB_CONNECT_STRING 
Set myCommand.ActiveConnection = myConn 
rem myCommand.CommandText = "UPDATE Klienci_NC SET Klienci_NC.Klient = 'Hello'" 
rem myCommand.CommandText = "UPDATE Klienci_NC SET Klienci_NC.Klient = '" & Klient_niceform & "'" 

myCommand.CommandText = "UPDATE Klienci_NC SET Klienci_NC.Klient = '" & Klient_niceform & "' WHERE Klienci_NC.ID = '" & ID_zmienna & "'" 

myCommand.Execute 
myConn.Close 

Was zu tun, den ausgewählten Datensatz in der Datenbank zu aktualisieren, und alle nicht?

+1

[Vorsicht vor kleinen Bobby-Tischen.] (Https://xkcd.com/327/) –

+0

Wenn Ihre Frage ist, wie man die Variable 'ID_zmienna' automatisch füllt: wir können diese Frage nicht beantworten, da wir nichts über Ihre Datenbank wissen Struktur (oder Ihre Anwendung). –

Antwort

0

In dieser Zeile nicht die Verkettung korrigiert

myCommand.CommandText = "UPDATE Klienci_NC SET Klienci_NC.Klient = '" & & Klient_niceform' 'WHERE Klienci_NC.ID =' "& ID_zmienna &" '" 

Dies verliert Ihre where-Klausel aus dem Ende der Anweisung, so dass die Update-Befehl in jeder Zeile in der Tabelle.

Es muss so sein:

myCommand.CommandText = "UPDATE Klienci_NC SET Klienci_NC.Klient = '" & Klient_niceform & "' WHERE Klienci_NC.ID = '" & ID_zmienna & "'" 

Auch Zohar Kommentar sehr relevant ist. Diese Methode der Verkettung von Variablen in SQL ist für SQL Injection-Angriffe offen. Erwägen Sie, ADO.NET SQLCommand mit Parameter-Objekten zu verwenden.

+0

Ja, es ist offen, aber der Benutzer und Pwd sind in der Datei im Klartext, so dass das ist die geringste ihrer Sorgen. –

+0

danke für die Antwort. In diesem ganzen Skript ist der korrekte Eintrag. weiß jemand, wie ich mein Problem lösen kann? – darjab

+0

Wenn jeder Datensatz in der Datenbank aktualisiert wird, ist es wahrscheinlich, dass die WHERE-Klausel irgendwie verloren geht. Dies ist normalerweise auf Fehler in der Verkettung zurückzuführen. Wenn Sie weiter analysieren möchten, sollten Sie SQL Server Profiler öffnen und die SQL-Anweisungen erfassen, die von Ihrem Skript generiert werden. Schau dir dieses Video https://www.youtube.com/watch?v=mJ8Dyv4Uk6E an. Profiler ist ein Kernwerkzeug zum Debuggen dieser Art von Problemen. – EvalKeneval

Verwandte Themen