Vb.net 检查DBF数据库中是否存在值

Vb.net 检查DBF数据库中是否存在值,vb.net,exists,dbf,Vb.net,Exists,Dbf,我试图检查名为PROMGL.DBF的数据库中的第二列(ColName)中是否存在值“IAV-1419” 我得到这个错误:一个或多个必需参数没有值 Dim con As New OleDbConnection Dim cmd As New OleDbCommand Dim FilePath As String = "C:\" Dim DBF_File As String = "PROMGL" Dim ColName As String = "[NA

我试图检查名为
PROMGL.DBF
的数据库中的第二列(
ColName
)中是否存在值“IAV-1419”

我得到这个错误:一个或多个必需参数没有值

        Dim con As New OleDbConnection
    Dim cmd As New OleDbCommand

    Dim FilePath As String = "C:\"
    Dim DBF_File As String = "PROMGL"
    Dim ColName As String = "[NALOG,C,8]"
    con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath & _
    " ;Extended Properties=dBASE IV"
    cmd = New OleDbCommand("SELECT * FROM PROMGL WHERE [NALOG,C,8] = @NAL")


    cmd.Connection = con
    con.Open()
    cmd.Parameters.AddWithValue("@NAL", "IAV-1419")
    Using reader As OleDbDataReader = cmd.ExecuteReader()
        If reader.HasRows Then
            con.Close()
            Label6.Text = "EXIST"
            TextBox1.Text = ""
            TextBox1.Focus()

        Else
            Label6.Text = "DOESN'T EXIST"

        End If
    End Using

我被困在这里,如果有人能帮我检查一下这个代码

您确定您的连接字符串正确吗

Data Source=" & FilePath & 
连接字符串如何知道它只指向“C:\”的数据库,我认为缺少数据库名称

另一个个人建议是在示例中使代码更易于阅读:

    Dim FilePath As String = "C:\"
    Dim DBF_File As String = "PROMGL"
    Dim ColName As String = "[NALOG,C,8]"
    Using con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath & _
    " ;Extended Properties=dBASE IV")
        con.Open()
    Using  cmd As New OleDbCommand("SELECT * FROM PROMGL WHERE [NALOG,C,8] = @NAL", con
            cmd.Parameters.AddWithValue("@NAL", "IAV-1419")
            Using reader As OleDbDataReader = cmd.ExecuteReader()
                If reader.HasRows Then
                    Label6.Text = "EXIST"
                    TextBox1.Text = ""
                    TextBox1.Focus()
                Else
                    Label6.Text = "DOESN'T EXIST"
                End If
            End Using
        End Using
    End Using

不确定,但OleDb要求参数占位符是问号?。您可以尝试将@NAL更改为?文件路径为C:\PROMGL.dbf如果我将该路径放在文件路径中,我会得到一个错误:“C:\PROMGL.dbf不是有效路径…”您需要添加到类似这样的内容C:\\PROMGL.dbf也将所有内容放在一个try cath中,以便您可以查看您的执行选项并查看问题所在。对于dBase,表名是文件名。。。因此,PROMGL将等同于PROMGL.dbf,因此文件路径C:\是正确的。请检查列名和表名的大小写是否与DB中的相同。我不确定dBase是否区分大小写。请使用NALOG而不是NALOG,C,8