2010-03-04 22 views
6

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 

?

+1

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. –

+0

SQL.NET ile yapılan istemci uygulamalarında sql enjeksiyonunun var olabileceğini hiç düşünmemiştim. Teşekkürler – user225269

+0

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. –

cevap

11

Bu hatanın olağan nedeni eksik veya yanlış yazılmış bir değerdir. AdminName Null veya sıfır uzunluklu bir dize olması muhtemel görünüyor.

+0

Sadece basit bir yazım hatası hatası için özür dilerim: AdminPassS = '"& adminPass AdminPass olmalıdır ... ama herhangi bir şekilde – user225269

22

bir Erişim arka uç için geliştiren bir no value given for one or more required parameters hata başa çıkmak için iyi bir hile CommandText içeriğini kapmak ve Erişim kendisi bir kukla sorguda yapıştırın etmektir. Ardından, Access size hangi alanın soruna neden olduğunu belirten bir açılır pencere sunacaktır (genellikle sizin durumunuzdaki gibi bir yazım hatası).

+0

hoş bir cevap için teşekkürler, buradaki gerçekten güzel, iyi hileler çok var sizin gibi canavarlar alabilirsiniz, teşekkürler :) – user225269

+0

Teşekkürler - eski veritabanları ile uğraşmak zorunda kaldım, tüm Erişim hileler unuttum! – Meg

1

Komut metnini erişimin kendisine yapıştırarak ve Access hangi alanda sorun olduğunu söyleyerek açılırken, bir tür görünmüyorsa, alan adını köşeli parantez içine almayı deneyin. [] Sütunlarınızdan birinin bir anahtar kelime içerebilir. Bu bana, LL_ID sütunu - bunu [LL_ID] olarak değiştirmem gerektiğinde oldu.

İlgili konular