1

如何使用 VB.Net 在 64 位操作系统上读取 DBF 文件?

4

3 回答 3

1

首先,您需要访问 64 位可再发行组件,可在以下网址获得:http: //www.microsoft.com/downloads/en/details.aspx? familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en

然后您可以在控制面板、管理工具、数据源 (ODBC) 中配置 ODBC 数据源。

然后,我可以在 C# 中这样做,如下所示;这在 VB.NET 中应该类似:

var connectionString = "Driver={Microsoft dBASE Driver (*.dbf)};" +
                                                      "Driverid=277;" +
                                                      @"Dbq=C:\temp\";

var query = "SELECT * FROM UPDATED" //file is "updated.dbf"


using (var oConn = new OdbcConnection { ConnectionString = connectionString })
            {
                try
                {
                    oConn.Open();
                    var oCmd = oConn.CreateCommand();
                    oCmd.CommandText = Query;

                    var dr = oCmd.ExecuteReader();

                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {

                // get your data from your dbf!
                        }
                    }
                }
                finally
                {
                    oConn.Close();
                }
            }
于 2011-03-15T12:29:46.217 回答
0

而不是 Microsoft.Jet.OLEDB... 您必须在 Win7 的连接字符串中使用 Microsoft.ACE.OLEDB...。更多信息可以从 www.connectionstrings.com 的accdb部分获得。您可以将 DBF 文件作为表连接并查询数据/模式。

如果您的 Win7 是 64 位并且安装了 MS Office 是 32 位(任务管理器 winword.exe * 32),则 ACE 驱动程序将以 32 位模式安装,因此您的程序/源代码将无法连接到 DBF 文件。

怎么找。

在 C:\windows\sysWoW64\odbcad32.exe 打开 32 位 ODBC 仿真器并转到“驱动程序”选项卡。您必须看到很多要连接的驱动程序,您可以在其中找到 ACE 提供程序。

在 C:\windows\system32\odbcad32.exe 打开 64 位 ODBC 管理员并转到“驱动程序”选项卡。您必须只看到“SQL 服务器”驱动程序或少数特定于 64 位的驱动程序,而不是 ACE 驱动程序。

解决方案

  1. 在 x86 模式下编译当前程序以使用 32 位仿真器驱动程序。
  2. 另一种解决方案是查找是否可以卸载 32 位 MS Office 并获得 64 位版本。这将自动解决所有问题。

祝你好运

文卡特

于 2012-05-23T04:02:21.010 回答
0

您需要将程序编译为 32 位;它仍然可以在 64 位操作系统上正常运行。将平台目标更改为“x86”而不是“任何 CPU”或“x64”。然后您可以使用 Visual FoxPro Ole Db Provider 来访问 dbf 文件。

于 2011-03-15T12:25:52.067 回答