1

単なる dbase ファイルであるファイルを読み込もうとしていますが、標準の拡張子がない場合、ファイルは次のようになります。

Test.Dat

このコード ブロックを使用して、ファイルを読み取ろうとしています。

string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Temp;Extended Properties=dBase III";
            OleDbConnection dBaseConnection = new OleDbConnection(ConnectionString);
            dBaseConnection.Open();

            OleDbDataAdapter oDataAdapter = new OleDbDataAdapter("SELECT * FROM Test", ConnectionString);
            DataSet oDataSet = new DataSet();
            oDataAdapter.Fill(oDataSet);//I get the error right here...
            DataTable oDataTable = oDataSet.Tables[0];
            foreach (DataRow dr in oDataTable.Rows)
            {
                Console.WriteLine(dr["Name"]);
            }

もちろん、test という名前の dbase ファイルが見つからないため、これはクラッシュしますが、ファイルの名前を Test.dbf に変更すると、問題なく動作します。サードパーティのアプリケーションがファイル形式として使用しているため、常にファイルの名前を変更することはできません。

C# で標準拡張子のない dbase ファイルを読み取る方法を知っている人はいますか?

ありがとう。

4

1 に答える 1

1

コードについて私を混乱させるのは、ConnectionString の作成方法です。私は次のようにします:

string databaseFile = "test.dat";
string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Temp\" + databaseFile +";Extended Properties=dBase III";

パスのデータ ソース部分にファイル名を設定する場合、ファイルの種類や拡張子に関係なく、問題が発生したことはありません。

SELECTステートメントに関しては、「SELECT * FROM Test」は、「Test」という名前のファイルではなく、データベース内の「Test」という名前のテーブルからすべてのデータを選択しています。

私は dBase ファイルを扱ったことはありませんが、C# がデフォルトの dBase 拡張機能を使用して必要なファイルを特定するには、データ ソースで十分であり、そうでないときにデータ アダプターを入力するとクラッシュすることが原因であると推測されます。デフォルトの拡張子を使用します。特定のファイル名を追加してみて、機能するかどうかを確認してください。

于 2009-05-16T10:03:42.520 に答える