Lo que está mal aquí, siempre recibo algunos errores desagradables incluso si funciona el mismo código que utilicé anteriormente. Pero cuando lo aplico a otra forma, me da el error anterior. aquí es mi código:no se da ningún valor para uno o más parámetros requeridos
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
Y aquí está el código en el botón que trata de actualizar los datos:
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
lo que podría ser mal aquí?
Parece que el código está listo para la inyección de SQL (aunque no es DML porque Jet/ACE no puede ejecutar varias instrucciones). Realmente deberías estar usando parámetros. –
Nunca pensé que la inyección de SQL podría existir en aplicaciones de clientes realizadas a través de vb.net. gracias – user225269
Con un back-end de Jet, el riesgo es bajo, ya que el único riesgo es revelar demasiados datos (por parte del usuario que intenta explotar su código poniendo una expresión que evaluará TRUE para todas las filas), pero eso puede ser problema en sí mismo, particularmente con una ACTUALIZACIÓN, que podría terminar cambiando datos en todas las filas en lugar de solo en el subconjunto que se desea. –