4

System.Data.Odbc.OdbcConnection を使用して DBF ファイルをクエリしようとしています。ファイルにスペースが含まれていない場合は正しく動作しますが、ファイル パスまたはname にスペースが含まれています。

私は次のコードを使用しています:

oConn = 新しい System.Data.Odbc.OdbcConnection(); oConn.ConnectionString = "Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=NA;Exclusive=No; Collat​​e=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";

oCmd.CommandText = "SELECT * FROM C:\test 2\12345678.dbf";

コマンド テキストはハードコードされていません。簡単にするために、そのように含めました。アプリケーションは、ユーザーが DBF ファイルを選択して表示できるように設定されています。ユーザーがDBFファイルを保存する場所を制御することはできません。ファイル名/パスにスペースを入れないように覚えておく必要はありません。

ファイル名/パスのスペースをエスケープするにはどうすればよいですか?

4

2 に答える 2

3

私もこの問題に遭遇していました。これは Google で一番のヒットだったので、あまり期待はしていませんでした。ただし、現在のディレクトリを問題のあるディレクトリに変更し、CommandText のパスを除外することで、コードを機能させることができました。

//Save the current directory
string currentDir = System.IO.Directory.GetCurrentDirectory();

//Select the path that we need to use
System.IO.Directory.SetCurrentDirectory("C:\\test 2\\");

//Now the path isn't required:
oCmd.CommandText = @"SELECT * FROM 12345678.dbf";

//Restore the old directory
System.IO.Directory.SetCurrentDirectory(currentDir);

ファイルの名前にできることはまだ限られています (スペースはなく、8 文字以下だと思います) が、それは私が扱うことができるものです。

于 2010-10-29T18:04:17.400 に答える
3

おそらく、「MS-DOS 8.3 ファイル名形式」に関連する問題です。次のリンクを確認できます。

于 2010-06-30T16:24:49.707 に答える