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.

( EDIT ) の 2 行目に

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

( EDIT ) 接続文字列を使用

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 プロバイダーをダウンロードして操作する必要がある場合があります。

接続を表示/説明するのに役立つ以前の質問に回答しました。さらに、最新の Visual Foxpro OleDB プロバイダーを取得/ダウンロードするための Microsoft へのリンクもあります。

接続文字列に関するメモです。.dbf ファイルが「データベース」の一部ではなく、空きテーブルである場合でも、データが存在する物理 PATH に接続し、テーブルの名前に基づいてクエリを実行してデータを取得します。

于 2012-02-23T18:21:06.397 に答える
0

ODBC データ ソースが構成されているかどうかを確認します ([スタート] > [設定] > [コントロール パネル] > [ODBC])。Connection オブジェクトの接続文字列には、データ ソースの名前を含める必要があります。テーブル テストは、構成されたデータ ソースが指すデータベースのテーブルである必要があります。

于 2012-02-21T14:49:31.930 に答える