2016-05-25 10 views
0

mit VBScript Hinzufügen habe ich den Code:mehr Daten zu MSSQL-Datenbank

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 = 'Password1'" 
    Set myConn = CreateObject ("ADODB.Connection") 
    Set MyCommand = CreateObject ("ADODB.Command") 
    myConn.Open DB_CONNECT_STRING 
    Set myCommand.ActiveConnection = myConn 

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

    myCommand.Execute 
    myConn.Close 

Ich mag MSSQL-Datenbank weitere Daten an die Adresse in der Spalte „Klienci_NC.adres“ & Adres_niceform & mit Bezug zu schreiben die VBScript sieht wie folgt aus:

myCommand.CommandText = "UPDATE Klienci_NC SET Klienci_NC.adres = '" & & Adres_niceform' 'WHERE Klienci_NC.ID =' "& ID_zmienna &" ' " 

jedoch mit

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 = 'Password1'" 
    Set myConn = CreateObject ("ADODB.Connection") 
    Set MyCommand = CreateObject ("ADODB.Command") 
    myConn.Open DB_CONNECT_STRING 
    Set myCommand.ActiveConnection = myConn 

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

    myCommand.CommandText = "UPDATE Klienci_NC SET Klienci_NC.adres = '" & & Adres_niceform' 'WHERE Klienci_NC.ID =' "& ID_zmienna &" ' " 

    myCommand.Execute 
    myConn.Close 

Es erfolgt nur die erste Zeile:

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

Wie man dem Skript beitritt:

myCommand.CommandText = "UPDATE Klienci_NC SET Klienci_NC.adres = '" & & Adres_niceform' 'WHERE Klienci_NC.ID =' "& ID_zmienna &" ' " 

die zwei funktionierten richtig?

+1

Sie mehrere Elemente in der set-Klausel wie folgt verwenden können: 'Aktualisierungstabelle col1 = val1 gesetzt, col2 = val2 wo ...', aber Ihr Code ist möglicherweise auch anfällig für SQL-Injection-Angriffe und Sie sollten ADODB verwenden Befehlsparameter, um die Werte anstelle der rohen Verkettung zu injizieren. Ich erinnere mich jedoch nicht genau an die richtige Syntax (deshalb ist dies ein Kommentar und keine Antwort). – jpw

Antwort

1

Kombinieren Sie beide Aussagen?

myCommand.CommandText = "UPDATE Klienci_NC SET Klienci_NC.Klient = '" & Klient_niceform & "',Klienci_NC.adres = '" & Adres_niceform &"' WHERE Klienci_NC.ID ='" & ID_zmienna &"'" 
+0

Ich stimme mit jpw in Bezug auf SQL-Injection überein, wenn Sie jedoch die Zeichenfolge wirklich erstellen möchten, möchten Sie möglicherweise mögliche einfache Anführungszeichen einschließen. Zum Beispiel: ersetzen (Klient_niceform, "'", "' '") –

+0

Einfacher Angebotsersatz ist nirgendwo gut genug, um sql-Injektion zu verhindern. Es ermöglicht jedoch zumindest, dass tatsächliche Daten, die ein einzelnes Zitat enthalten, funktionieren. –

+0

Kein Argument von mir hier. Das Einreißen des einfachen Zitats war meine unmittelbare Sorge. Wenn er verpflichtet ist, die Saite zu bauen, wollte ich nicht, dass er einem Geist hinterher jagt. –

Verwandte Themen