Cosa c'è di sbagliato qui, ottengo sempre alcuni errori sgradevoli anche se funziona lo stesso codice che ho usato in precedenza. Ma quando lo applico ad un altro modulo mi dà l'errore sopra. ecco il mio codice:nessun valore dato per uno o più parametri richiesti
Imports System.Data.OleDb
Public Class Updater2
Public adminID As String
Public adminName As String
Public adminPass As String
Private con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;Jet OLEDB:Database Password=nrew123$%^;")
Private com As OleDb.OleDbCommand
Public Sub New()
con.Open()
com = New OleDb.OleDbCommand("Select * from admintable")
com.Connection = con
End Sub
Public Sub updates()
com.CommandText = "UPDATE admintable SET AdminName = '" & adminName & "', AdminPassS = '" & adminPass & "' WHERE ID = '" & adminID & "'"
com.ExecuteNonQuery()
End Sub
End Class
Ed ecco il codice nel pulsante che cerca di aggiornare i dati:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
shikai.adminID = textbox1.text
shikai.adminName = TextBox4.Text
shikai.adminPass = TextBox3.Text
shikai.updates()
MsgBox("Successfully updated!")
End Sub
quello che potrebbe essere sbagliato qui?
Sembra il codice maturo per l'iniezione SQL (ma non DML poiché Jet/ACE non può eseguire più istruzioni). Dovresti davvero usare i parametri. –
Non ho mai pensato che SQL injection potesse esistere nelle applicazioni client realizzate tramite vb.net. grazie – user225269
Con un back-end Jet, il rischio è basso, poiché l'unico rischio è quello di rivelare troppi dati (l'utente tenta di sfruttare il codice inserendo un'espressione che valuterà su TRUE per tutte le righe), ma che può essere un problema in sé e per sé, in particolare con un UPDATE, che potrebbe finire per modificare i dati in tutte le righe anziché solo nel sottogruppo desiderato. –