System.Data.OleDb.OleDbException: 'No value given for one or more required parameters.'

System.Data.OleDb.OleDbException: 'No value given for one or more required parameters.'

System.Data.OleDb.OleDbException: 'No value given for one or more required parameters.'

我在这段代码中有这个错误,我该如何解决?

Imports System.Data.OleDb

Public Class yenikayit
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim isimT As String = ""
    Dim soyisimT As String = ""
    Dim tcNoT As String = ""
    Dim yasT As String = ""
    Dim cinsiyetT As String = ""
    Dim perNoT As String = ""
    Dim egDurT As String = ""
    Dim meslekT As String = ""
    Dim telNoT As String = ""
    Dim emailT As String = ""

    isimT = TextBox1.Text
    soyisimT = TextBox2.Text
    tcNoT = TextBox3.Text
    yasT = TextBox6.Text
    cinsiyetT = ComboBox1.Text
    perNoT = TextBox4.Text
    egDurT = ComboBox2.Text
    telNoT = TextBox5.Text
    meslekT = TextBox10.Text
    emailT = TextBox9.Text


    Dim query As String = "INSERT INTO Personel (isim,soyisim,Yas,Cinsiyet,Alan,Egitim,TC,personel_id,tel_no,email) VALUES(isimT,soyisimT,yasT,cinsiyetT,meslekT,egDurT,tcNoT,perNoT,telNoT,emailT)"
    Dim dbsource As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\MONSTER\Desktop\AGKS\AGKS\Database5.accdb"
    Dim conn = New OleDbConnection(dbsource)
    Dim cmd As New OleDbCommand(query, conn)
    conn.Open()
    Dim sonuc As Boolean
    sonuc = cmd.ExecuteNonQuery()
    If (sonuc = 1) Then
        MsgBox("Girdiğiniz veriler kayıt olmuştur")
        conn.Close()
    End If
End Sub
End Class

this is the part of the code that give us error

目前,您的代码没有向命令添加任何参数值,因此出现 "No Values Given" 错误。该命令无法识别这些名称并为其分配值,只是因为您已将它们声明为上面的变量。你应该清楚这些是你的 sql 查询中的参数,然后在执行查询之前设置每个参数的值:

Note that all instances of OleDbType.VarChar need to be replaced with the correct datatypes of your columns. I obviously have no way of knowing what types those columns are so I have just made them all VarChar, but you should adjust those to match your table schema.

Dim dbsource As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\MONSTER\Desktop\AGKS\AGKS\Database5.accdb"
Dim query As String = "INSERT INTO Personel (isim,soyisim,Yas,Cinsiyet,Alan,Egitim,TC,personel_id,tel_no,email) " & _
                       "VALUES (@isimT,@soyisimT,@yasT,@cinsiyetT,@meslekT,@egDurT,@tcNoT,@perNoT,@telNoT,@emailT)"
Using conn As OleDbConnection = New OleDbConnection(dbsource)
    Dim cmd As New OleDbCommand(query, conn)
    With cmd
        .Parameters.Add("@isimT", OleDbType.VarChar).Value = TextBox1.Text
        .Parameters.Add("@soyisimT", OleDbType.VarChar).Value = TextBox2.Text
        .Parameters.Add("@yasT", OleDbType.VarChar).Value = TextBox6.Text
        .Parameters.Add("@cinsiyetT", OleDbType.VarChar).Value = ComboBox1.Text
        .Parameters.Add("@meslekT", OleDbType.VarChar).Value = TextBox10.Text
        .Parameters.Add("@egDurT", OleDbType.VarChar).Value = ComboBox2.Text
        .Parameters.Add("@tcNoT", OleDbType.VarChar).Value = TextBox3.Text
        .Parameters.Add("@perNoT", OleDbType.VarChar).Value = TextBox4.Text
        .Parameters.Add("@telNoT", OleDbType.VarChar).Value = TextBox5.Text
        .Parameters.Add("@emailT", OleDbType.VarChar).Value = TextBox9.Text
    End With
    conn.Open()
    Dim sonuc As Boolean
    sonuc = cmd.ExecuteNonQuery()
    If (sonuc = 1) Then
        MsgBox("Girdiğiniz veriler kayıt olmuştur")
    End If
    conn.Close()
End Using

好的,试试这样:

Dim query As String = "INSERT INTO Personel (isim,soyisim,Yas,Cinsiyet,Alan,Egitim,TC,personel_id,tel_no,email) "
query +="VALUES(@isimT,@soyisimT,@yasT,@cinsiyetT,@meslekT,@egDurT,@tcNoT,@perNoT,@telNoT,@emailT)"
Dim dbsource As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\MONSTER\Desktop\AGKS\AGKS\Database5.accdb"
Dim conn = New OleDbConnection(dbsource)
Dim cmd As New OleDbCommand(query, conn)
 query.Parameters.AddWithValue("@isimT", TextBox1.Text)
 cmd.Parameters.AddWithValue("@soyisimT", TextBox2.Text)   
 cmd.Parameters.AddWithValue("@tcNoT", TextBox3.Text)
 cmd.Parameters.AddWithValue("@yasT", TextBox6.Text)
 cmd.Parameters.AddWithValue("@cinsiyetT", ComboBox1.Text)
 cmd.Parameters.AddWithValue("@perNoT", TextBox4.Text)
 cmd.Parameters.AddWithValue("@egDurT", ComboBox2.Text)
 cmd.Parameters.AddWithValue("@telNoT", TextBox5.Text)
 cmd.Parameters.AddWithValue("@meslekT", TextBox10.Text)
 cmd.Parameters.AddWithValue("@emailT", TextBox9.Text)
 conn.Open()
 Dim sonuc As Boolean
    sonuc = cmd.ExecuteNonQuery()
    If (sonuc = 1) Then
        MsgBox("Girdiğiniz veriler kayıt olmuştur")
        conn.Close()
    End If

这应该可以完成工作。这应该可以解决您的异常。