1

我继承了一些 C# 代码。它处理旧的 dBase 文件。至少 3-5 年没有人接触过代码,编译后的版本可以在某个地方工作,但我无权访问它。现在我通过在应该运行的相同外观环境(相同的架构,足够的驱动程序)上从源代码重新编译它来尝试它的工作原理,它给了我以下错误:

[42S02] [Microsoft][ODBC dBase driver] A Microsoft Jet database engine could not find the object 'test'. Make sure the object exists and that you spell its name and the path name correctly.

编辑)在第二行

dbCommand.CommandText = "SELECT Count(*) FROM test";
recNum = (int)dbCommand.ExecuteScalar();

编辑)与连接字符串

OdbcConnection connection = new OdbcConnection(String.Format("driver={{Microsoft dBase Driver (*.dbf)}};DriverID=533;Dbq={0};Exclusive=1;", path));

我尝试了在 Google 上找到的显而易见的解决方案,例如确定文件是否确实存在、更改文件名等。所以,我很确定文件在它应该在的位置,我很确定该文件没有损坏(我可以使用从互联网上下载的一些共享软件打开它,更不用说该文件在过去 3-5 年内也没有更改)。这是我第一次使用 dBase 和 ODBC,所以我可能会错过一些应该很明显的东西。

我还能尝试什么让它发挥作用?

4

2 回答 2

0

很多人喜欢在较旧的 .dbf 文件上使用 Jet,但它们实际上可能不是 dBASE,而是 Foxpro(头信息略有不同)。您实际上可能需要下载并使用 VFP OleDB 提供程序。

我已经回答了以前帮助显示/描述连接的问题,此外,还有一个指向 Microsoft 的链接,用于获取/下载最新的 Visual Foxpro OleDB 提供程序。

只是关于连接字符串的注释。即使 .dbf 文件不是“数据库”的一部分,而是一个空闲表,您也希望连接到数据所在的物理 PATH,然后只需根据表的名称进行查询即可获取数据。

于 2012-02-23T18:21:06.397 回答
0

检查您是否配置了 ODBC 数据源(开始 > 设置 > 控制面板 > ODBC)。数据源的名称必须包含在 Connection 对象的连接字符串中。表test必须是配置的数据源指向的数据库的表。

于 2012-02-21T14:49:31.930 回答