在OLEDB中使用EXECSCRIPT()命令时"Variable is not found" VB.NET



我有一个包含超过10k条记录的DBF文件,我需要使用Visual FoxPro的SEEK命令(为了更快地搜索(使用 vb.net OleDbCommand搜索记录。我尝试使用EXECSCRIPT()来执行 VFP 命令。这是我的代码:

  Using oleCon As OleDbConnection = New OleDbConnection("C:UsersmaymayDocumentsDBF File")
        Try
            oleCon.Open()
            oleCom.Connection = oleCon
            oleTrans = oleCon.BeginTransaction(IsolationLevel.ReadCommitted)
            oleCom.Transaction = oleTrans
            oleCom.CommandText = "EXECSCRIPT([USE 'C:UsersmaymayDocumentsDBF File201-file.dbf' ALIAS AA])"
            oleCom.ExecuteNonQuery()
            oleCom.CommandText = "EXECSCRIPT([SELECT AA])"
            oleCom.ExecuteNonQuery()
            oleCom.CommandText = "EXECSCRIPT([SEEK('105345')])"
            oleCom.ExecuteNonQuery()
            oleTrans.Commit()
        Catch ex As Exception
            Try
                oleTrans.Rollback()
                MessageBox.Show("Error occurred. Rollback success")
            Catch rb As Exception
                MessageBox.Show("rollback failed")
            End Try
        End Try
    End Using

但线

 oleCom.CommandText = "EXECSCRIPT([USE 'C:UsersmaymayDocumentsDBF File201-file.dbf' ALIAS AA])"

返回异常

找不到变量 ''。

我试图删除[ ],消息变成

缺少函数名称(。

我错过了什么?或者有没有其他更快的方法来使用 vb.net OledbCommand 在 DBF 中查找记录?任何帮助将不胜感激。

该行本身不会返回此类错误。您可能有一些查找变量的索引或数据库事件。应首先尝试从 VFP 中执行该行。

OTOH 我不建议使用 Execscript((。它的用法有限,并且在您拥有的代码中,它实际上没有任何用途(如果它成功工作 - 顺便说一句,该代码不可能是您的真实代码,它将在您定义连接字符串的第一行失败,您有一个无效的连接字符串(。

无论如何,假设你要用那条记录做一些事情,你可以这样做:

Using oleCon As OleDbConnection = New OleDbConnection("Provider=VFPOLEDB;Data Source=C:UsersmaymayDocumentsDBF File")
    Dim cmd As New OleDbCommand("select * from ('201-file') where yourFieldName = '105345'", oleCon)
    oleCon.Open()
    Dim rdr = cmd.ExecuteReader()
    If rdr.Read() Then
    ' do whatever with rdr
    ' ie:       
    'Console.WriteLine(rdr("FieldName"))
    End If 
    oleCon.Close()
End Using

如果你的字段名称有一个索引,它将被使用。顺便说一句,您正在搜索像105345这样的值是可疑的,就好像它是一个字符串一样。

相关内容

最新更新