Burada neyin yanlış kullanıldığına bakılırsa, daha önce kullandığım aynı kodla çalışsa bile her zaman bazı hatalar oluyor. Ama bunu başka bir forma uyguladığımda, yukarıdaki hatayı verir. İşte benim kod:Bir ya da daha fazla gerekli parametre için verilen değer yok
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
Ve burada veri güncelleme çalışır düğmesini kod: burada yanlış ne olabileceğini
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
?
SQL enjeksiyonu için bana olgun kod gibi görünüyor (Jet/ACE birden çok deyimi yürütemediğinden DML olmasa da). Gerçekten parametreleri kullanmalısın. –
SQL.NET ile yapılan istemci uygulamalarında sql enjeksiyonunun var olabileceğini hiç düşünmemiştim. Teşekkürler – user225269
Bir Jet arka ucuyla, risk çok düşük olduğundan, risk çok fazla veri açığa çıkarır (kullanıcı tüm satırlar için DOĞRU olarak değerlendirilecek bir ifadeyi koyarak kodunuzu kullanmaya çalışır), ancak bu bir Özellikle bir UPDATE ile, kendi içinde ve sadece istenen sıradaki alt kümede değil, tüm satırlarda veriyi değiştiren problem olabilir. –