2016-10-09 3 views
0

Ich habe eine Listview, ich habe bereits einen Code, dass, wenn ich die "Kaufen" -Taste die Menge links und Menge wird in der Datenbank subtrahiert und wird in der Listview angezeigt werden. Im Gegensatz dazu möchte ich einen ausgewählten Artikel entfernen und seine Menge zur verbleibenden Menge hinzufügen. her mein CodeAddition Abfrage zu ausgewählten Artikel

openconnection() 
    cmd = New SqlCommand("UPDATE products SET quantity = '" + TextBox3.Text + "' WHERE bar_code = '" & ComboBox1.Text & "'", conn) 

    For Each i As ListViewItem In 
     ListView1.SelectedItems 

     cmd.Parameters.AddWithValue("@quantity", Val(TextBox5.Text) + Val(TextBox3.Text)) 

     cmd.Parameters.AddWithValue("@barcode", TextBox3.Text) 

     ListView1.Items.Remove(i) 
     ListView1.Items.Remove(i) 
     dr = cmd.ExecuteReader() 
    Next 


End Sub 

Der Artikel entfernt werden, aber es wird nicht in der Datenbank hinzufügen, ich weiß nicht, was ich fehle.

+0

Ich glaube, Sie am meisten über Parameter in SQL-Abfragen lesen https://www.mssqltips.com/ sqlservertip/2981/using-parameters-for-sql-server-Abfragen-und-gespeicherte-procedures/ – Damirchi

+0

Tag der 'DBMS' Sie verwenden –

+0

Es gibt ein paar Dinge Probleme, die ich hier sehe. Erstens fügen die Parameter addedwith value lines überhaupt nichts hinzu, da sich in Ihrem Query-String keine Parameter befinden. Sie versuchen, die Mengenspalte mit einer Zeichenfolge zu aktualisieren, wenn es sich wahrscheinlich um einen Int handelt. Sie sollten neben textbox1 usw. auch eine Namenskonvention verwenden, da diese nicht konsistent verwendet werden. textbox3 und combobox1 scheinen beide Barcodes gemäß Ihrem Code zu halten, aber Sie verwenden textbox3 als Wert für die Mengenaktualisierung in einer Zeile, und Sie fügen es einer Textbox5 in einer anderen Zeile hinzu. Nichts macht hier Sinn – soohoonigan

Antwort

0

Bin kein Experte in vb.net, aber ich denke, dass Ihr Code sql Injektion anfällig ist. Es sieht aus wie Sie parameters mit TextBox Wert initialisiert haben, aber Sie verwenden nicht in Abfrage

Verwenden Sie die parameter's

UPDATE products SET quantity = quantity - @quantity WHERE bar_code = @barcode 
Verwandte Themen