无法连接到dbf文件

时间:2013-05-10 11:11:13

标签: vb.net oledb foxpro

我正在尝试从测试vb.net表单连接到foxpro表(.dbf)。 我收到一条OleDbException,上面写着“无法打开文件c:\ emp \ emptbl.dbf”

尝试过以下两个连接字符串:

  

Provider = VFPOLEDB.1;数据源= C:\ emp \ emptbl.dbf

来自MSDN文章here

  

Provider = vfpoledb; Data Source = C:\ emp \ emptbl.dbf;整理序列=机器;

来自connectionstrings.com

后者似乎是连接到单个表时使用的类型,但是无论使用哪个都会抛出相同的异常。

我可以在visual foxpro 6.0中打开并执行相同的查询。 这是我的代码:

    Dim tbl As DataTable = New DataTable()

        Using con = New OleDbConnection(conString)
            cmd = New OleDbCommand() With {.Connection = con, .CommandType = CommandType.Text}
            Dim sSQL As String = "SELECT * FROM(EMPTBL)"
            cmd.CommandText = sSQL
            Dim adp As OleDbDataAdapter = New OleDbDataAdapter(cmd)
            Dim ds As DataSet = New DataSet()
            con.Open()
            adp.Fill(ds)
            con.Close()
            If (ds.Tables.Count > 0) Then
                tbl = ds.Tables(0)
            End If
        End Using

    Return tbl

1 个答案:

答案 0 :(得分:3)

OleDB提供程序应该只连接到表所在的PATH ...而不是实际的文件名。连接到PATH后,您可以从位于其中的任何.Dbf文件进行查询

Provider = VFPOLEDB.1;数据源= C:\ emp

从emptbl中选择* ...

您还可以在

查看其他连接字符串设置

ConnectionStrings.com

每条评论更新。

看来你越来越近了。你的尝试没有()parens。在VFP中,在parens中,它将其解释为“查找名为EMPTBL的变量”,并从其值中查询要查询的表的名称。不需要通过OleDB连接申请。

现在,打开文件是另一个。是否有可能另一个应用程序打开了表并且该文件是独占使用的?因此也无法通过.net应用程序打开?即使是笑脸,如果你打开VFP,只是在C:\ Emp文件夹中做一个简单的创建表并在其中放入一条记录,那么你就知道没有其他程序会使用它,因为它是一个新文件。退出VFP并尝试查询该表。应该没有锁,没有其他程序期待它,所以它永远不应该被其他任何东西打开,你应该好好去。